{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "infectious-smell",
   "metadata": {},
   "source": [
    "### An Introduction to the Simplified Molecular Input Line Entry System (SMILES)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "50d5cce9",
   "metadata": {},
   "source": [
    "Install the necessary Python packages"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "677caa5d",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.353473Z",
     "start_time": "2025-05-05T16:57:14.350743Z"
    }
   },
   "outputs": [],
   "source": [
    "%%capture\n",
    "import sys\n",
    "IN_COLAB = 'google.colab' in sys.modules\n",
    "if IN_COLAB:\n",
    "    !pip install rdkit"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c575de06",
   "metadata": {},
   "source": [
    "Load the necessary Python libraries"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "ff754774",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.509931Z",
     "start_time": "2025-05-05T16:57:14.359873Z"
    }
   },
   "outputs": [],
   "source": [
    "from rdkit.Chem.Draw import IPythonConsole\n",
    "from rdkit.Chem import rdDepictor\n",
    "from rdkit import Chem\n",
    "\n",
    "IPythonConsole.ipython_useSVG = True\n",
    "IPythonConsole.molSize = 300, 300\n",
    "rdDepictor.SetPreferCoordGen(True)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "under-nomination",
   "metadata": {},
   "source": [
    "SMILES provides a simple, compact, somewhat human-readable notation for representing molecules.  SMILES, which is an acronym for **S**implified **M**olecular **I**nput **L**ine **E**ntry **S**ystem, was developed by [David Weininger](https://pubs.acs.org/doi/10.1021/ci00057a005) in the 1980s, a time when software like ChemDraw or Marvin Sketch for drawing chemical structures was unheard of.  While we now have easy access to chemical sketchers and don't typically have to create SMILES by hand, the format is still widely used.  Over time, SMILES has become one of a small number of generally accepted formats for representing chemical structures.  SMILES are also often referred to as \"SMILES strings\".  While it's fine to refer to a SMILES as a SMILES string, one should **never** refer to a single SMILES as \"SMILE\". Remember, \"S\" stands for \"system\".  Please don't refer to a \"SMILE\" or a \"SMILE string\". If you do this, I will roll my eyes.  You have been warned! \n",
    "\n",
    "The canonical reference for SMILES is the [Daylight Theory Manual](https://www.daylight.com/dayhtml/doc/theory/), I've borrowed liberally from that here. The [Daylight SMILES Tutorial](https://www.daylight.com/dayhtml_tutorials/languages/smiles/index.html) is another essential reference. For a bit more information on the history and folklore around SMILES, please consult this article from [Chemistry World](https://www.chemistryworld.com/opinion/weiningers-smiles/4014639.article)."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "painful-struggle",
   "metadata": {},
   "source": [
    "### Atoms\n",
    "\n",
    "SMILES are a combination of text symbols that represent atoms, bonds, and ring closures. Common organic elements are represented by their atomic symbols (B,C,N,O,S,F,Cl,Br,I) while less usual atomic symbols with two characters are represented in square brackets ([Au],[Ag],[Se]). \n",
    "\n",
    "### Bonds\n",
    "\n",
    "Single bonds between adjacent atoms are implicit.  For instance, \"CCC\" will represent \"n-propane\".  Double bonds are indicated by \"=\" and triple bonds are indicated by \"#\".  Let's take a look at how we can depict the SMILES for a few molecules.  In order to do this, we'll use the RDKit Python library.  We will start by importing the RDKit Chemistry library. "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "compressed-perspective",
   "metadata": {},
   "source": [
    "We can use the RDKit function **Chem.MolFromSmiles** to covert a SMILES to a molecule object that can be depicted. There are two ways that we can display a molecule's structure in the RDKit.  As shown below, we can create a molecule object and assign that object to a variable, here the variable is named \"propane\".  If we put a variable name on the final line of a cell in a Jupyter notebook, the value of that variable is displayed.  When that variable is a molecule, its structure is shown. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "integrated-treatment",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.667890Z",
     "start_time": "2025-05-05T16:57:14.657106Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "image/svg+xml": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 15.0,188.2 L 150.3,110.8' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 150.3,110.8 L 285.0,189.2' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 143.5,114.7 L 150.3,110.8 L 157.0,114.7' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "</svg>\n"
      ],
      "text/html": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 15.0,188.2 L 150.3,110.8' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 150.3,110.8 L 285.0,189.2' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 143.5,114.7 L 150.3,110.8 L 157.0,114.7' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<rdkit.Chem.rdchem.Mol at 0x34a842e30>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "propane = Chem.MolFromSmiles(\"CCC\")\n",
    "propane"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3975d0aa",
   "metadata": {},
   "source": [
    "We can also simply display the results of **Chem.MolFromSmiles**. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "66a61b74",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.676193Z",
     "start_time": "2025-05-05T16:57:14.671608Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "image/svg+xml": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 15.0,188.2 L 150.3,110.8' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 150.3,110.8 L 285.0,189.2' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 143.5,114.7 L 150.3,110.8 L 157.0,114.7' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "</svg>\n"
      ],
      "text/html": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 15.0,188.2 L 150.3,110.8' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 150.3,110.8 L 285.0,189.2' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 143.5,114.7 L 150.3,110.8 L 157.0,114.7' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<rdkit.Chem.rdchem.Mol at 0x34a842f10>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Chem.MolFromSmiles(\"CCC\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "introductory-triumph",
   "metadata": {},
   "source": [
    "Let's use a double bond to construct the SMILES for 2-pentene.  You may ask why I didn't call the variable in the cell below **2-penente**.  In Python, variable names cannot begin with a number.  In python, the string \"2-pentene\" would be interpreted as \"two minus pentene\"."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "lovely-houston",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.689119Z",
     "start_time": "2025-05-05T16:57:14.684055Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "image/svg+xml": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 15.0,164.3 L 82.5,125.4' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 82.5,125.4 L 150.0,164.4' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 82.5,138.9 L 144.1,174.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-2 atom-3' d='M 150.0,164.4 L 217.5,125.5' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-3 atom-3 atom-4' d='M 217.5,125.5 L 285.0,164.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 79.2,127.4 L 82.5,125.4 L 85.9,127.4' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 146.6,162.5 L 150.0,164.4 L 153.4,162.5' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 214.2,127.5 L 217.5,125.5 L 220.9,127.5' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "</svg>\n"
      ],
      "text/html": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 15.0,164.3 L 82.5,125.4' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 82.5,125.4 L 150.0,164.4' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 82.5,138.9 L 144.1,174.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-2 atom-3' d='M 150.0,164.4 L 217.5,125.5' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-3 atom-3 atom-4' d='M 217.5,125.5 L 285.0,164.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 79.2,127.4 L 82.5,125.4 L 85.9,127.4' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 146.6,162.5 L 150.0,164.4 L 153.4,162.5' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 214.2,127.5 L 217.5,125.5 L 220.9,127.5' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<rdkit.Chem.rdchem.Mol at 0x34a8431b0>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pentene = Chem.MolFromSmiles(\"CC=CCC\")\n",
    "pentene"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "coastal-leadership",
   "metadata": {},
   "source": [
    "In a similar fashion, we can incorporate a triple bond and write the SMILES for 2-pentene. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "wrong-services",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.701076Z",
     "start_time": "2025-05-05T16:57:14.696049Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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QuXAgQMTJkxQCUVERDz11FOtra0a1/F6vdZLxmlpaXo9A4q7IlTWrVtnPSM6cODATz/9VOMi7e3tHo/n5ptvVl8Us7Kyzp8/7/hS4QZujFBZuXKldS6N9rbnqVOnMjMz1RfFESNGeDyea9euOb5UhDf3RmiaZktLS15enrXtmZWVde7cOY3rVFdXP/7446rnRx999Mcff3R8qQhjro5Q6bntqXc383q91kvGaWlphw8fdnypCEtE+H81NTUpKSkqofj4+I0bN2pcpK2trbCwMDo62jCMAQMGZGVlXbx40fGlIswQ4T84su154sQJ6yXjO+64o7i4uLOz0/GlImwQYXc9tz0vXLigcZ2qqqpp06apnhMSErZv3+74UhEeiPD61LZnZGSkYRgjR47U+6LY1dW1du3a2NhY653jo0eP+mO1CGluibCjo0PjT+3atcuarTh58uRt27ZpXKS1tdV65zgqKio3N/fSpUsa10G4ckWEdXV1o0aNkt32/P33360vinfeeafeO8cIS66IcOnSpSqhSZMmbd26VeMKra2thYWFarbi4MGDc3Nz9bY9KyoqrOFUSUlJPg6nQnhwRYSmaXq93rvvvtu6mx06dEjjIo5se6p3jq3hVOnp6adPn9ZYDMKGWyI0/9r2tP8ST3vbc+rUqT5uezo1nAphwEURKidPnrS2PUePHl1cXCy47XngwAHrnWM1nErjIgh1rotQ2blz5/Tp033c9rTfzaKiovLz89va2jSus3nzZusFq9TU1F9++UXjIghdLo3Q/Otudtddd1lfFI8cOaJxHTVq0cdtT6eGUyEUuTdCxaltz61bt06aNEn1nJycvGPHDo2LODWcCqHF7REq9m3PMWPG+HI3GzVqlI/bnvv27UtLS7OGU61du1bjIgghRPi3yspKa9szMTGxvLxc4yKXLl3Kz89XdzNftj3tw6nmzJmze/dujYsgJBDhPzh1wox92zM2NlZv21PN5B85cqRhGP3798/MzPzjjz80roMgR4TX0XPbU+9uZt/2nDVrlt6259mzZ5nJH96I8F/ZT5hxcNtT74SZ+vr6J598Ui1m/PjxGzZs0LgIghMR3sCWLVusE2aSk5MrKio0LtLc3JybmztgwADDMIYNG1ZYWMhMfliI8Mbs257qbia47dltJr/2cCoEDyLsrZ7bntp3s4ceesi6m/32228a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",
      "image/svg+xml": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 15.0,91.8 L 82.5,130.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 82.5,130.6 L 150.1,169.4' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 88.4,120.5 L 155.9,159.3' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 76.7,140.7 L 144.3,179.5' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-2 atom-3' d='M 150.1,169.4 L 217.6,208.2' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-3 atom-3 atom-4' d='M 217.6,208.2 L 285.0,169.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 79.2,128.7 L 82.5,130.6 L 85.9,132.5' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 146.7,167.5 L 150.1,169.4 L 153.5,171.4' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 214.2,206.3 L 217.6,208.2 L 221.0,206.3' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "</svg>\n"
      ],
      "text/html": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 15.0,91.8 L 82.5,130.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 82.5,130.6 L 150.1,169.4' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 88.4,120.5 L 155.9,159.3' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 76.7,140.7 L 144.3,179.5' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-2 atom-3' d='M 150.1,169.4 L 217.6,208.2' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-3 atom-3 atom-4' d='M 217.6,208.2 L 285.0,169.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 79.2,128.7 L 82.5,130.6 L 85.9,132.5' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 146.7,167.5 L 150.1,169.4 L 153.5,171.4' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 214.2,206.3 L 217.6,208.2 L 221.0,206.3' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<rdkit.Chem.rdchem.Mol at 0x34a8433e0>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pentyne = Chem.MolFromSmiles(\"CC#CCC\")\n",
    "pentyne"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "natural-right",
   "metadata": {},
   "source": [
    "Of course, we can go beyond simple hydrocarbons, let's look at some more interesting examples."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "unsigned-halifax",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.715035Z",
     "start_time": "2025-05-05T16:57:14.710438Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAIAAAD2HxkiAAAABmJLR0QA/wD/AP+gvaeTAAAO8klEQVR4nO3df0yU9x3A8c8BgoK/MIDFqlh/gEBtFfyBVRuxJv6i7ZKFJsbcGpOGNsvG+MeRrUnR/dGxpMmuTZaNrcmGaWqKW5pdSjUTY/0NVWn9hXRUq4B1FdSqoCLCd388J4e2Cgd397nn7v3K/fEQnufuY9p3eO7ue885jDECQE+U9gBApCNCQBkRAsqIEFBGhIAyIgSUESGgjAgBZUQIKCNCQBkRAsqIEFBGhIAyIgSUESGgjAgBZUQIKCNCQBkRAsqIEFBGhIAyIgSUESGgjAgBZUQIKCNCQBkRAsqIEFBGhIAyIgSUESGgjAgBZUQIKCNCQBkRAsqIEFBGhIAyIgSUESGgjAgBZUQIKCNCQBkRAsqIEFBGhIAyIgSUESGgjAgBZUQIKCNCQBkRAsqIEFBGhIAyIgSUESGgjAgBZUQIKCNCQBkRAsqIEFBGhIAyIgSUESGgjAgBZUQIKCNCQBkRAsqIEFBGhIAyIgSUESGgjAgBZUQIKCNCQBkRAsqIEFBGhIAyIgSUESGgjAgBZUQIKCNCQBkRAsqIEFBGhIAyIgSUESGgjAgBZUQIKCNCQBkRAsqIEFBGhIAyIgSUESGgjAgBZUQIKCNCQBkRAsqIEFBGhIAyIgSUESGgjAgBZUQIKCNCQBkRAsqIEFBGhIAyIgSUESGgjAgBZUQYoQ4dOpSWluZwOJKTk6urq7XHiWhEGHE6OjrefPPNpUuXNjc3i0h7e3tBQcH8+fNbWlq0R4tQRBhBjDHbt2/Pzs5+++23RSQtLe2jjz56+umnReTYsWPTpk1bv359T0+P9piRxyAyHDly5LnnnrP+o8+fP//AgQN9v/rwww/HjRtn/WrevHl79+5VnDMCEWH4u3jxYlFRUVRUlIhMmjSpoqKip6fnoX16e3s3bdo0ZcoUK8WCgoJz586pTBuBiDCcdXV1uVyuMWPGiEhsbGxxcfGNGzces/+tW7fKy8ut/UeNGlVaWnrz5s2gTRuxiDBsud3up556qu8v29mzZwd5YGtrq9PpdDgcIvLkk09WVlb29vYGdNQIR4RhqL6+/vnnn7fyy8zM3Llz5xDupK6uLi8vz7qThQsXHj582O9zwkKEYaW9vb24uDg6OlpEJkyY4HK57t27N+R76+3traysfOKJJ0TE4XA4nc5Lly75cVpYiDBM3L171+VyWS9yjhgxori4+Nq1a365546OjrKysri4OBFJSEgoKyu7c+eOX+4ZFiIMB7t27crKyrJOHVeuXHnq1Cm/P0RTU1NhYaH1ELNmzaqqqvL7Q0QsIrS3xsbGdevWWW2kp6d/8sknAX24mpoa6819EXnhhRdOnjwZ0IeLEERoV1evXi0tLY2NjRWR8ePHl5eXd3V1BeFxu7u7KyoqkpKSRCQmJqaoqKitrS0IjxvGiNB+enp6KisrU1JSRCQqKsrpdH733XdBnuHKlSt+fAUowhGhzezevfuZZ56xTgjz8/OPHz+uOExDQ8OqVauG+V4IiNA2+r80MmXKlMrKSu2JPB5aFcB6N18RoQ1YbxKMHDmy702C27dvaw/1gP7r46z1bo9fH4f+iDCk2evt8osXL/atd5s0aRLr3QaJCENXXV3d4sWLrdO8BQsWHDp0SHuiQfn888/tOLYiIgxFdl9Cba8/4OqIMLRYHyYaPXp0GDy5+uFTWda7/SgiDCFut3vatGl9LzN+88032hP5Qf8XdWfOnMl6tx8iwpBw7NixZcuWWf+n5uTk7Nu3T3siP9u9e/ecOXOsf+CKFStOnDihPVEIIUJl3126tHHjRuvaExMnTnz//fd/eO2J8MB6t0chQj137xqX6+6sWSkJCdaHj77//nvtmQLOWu8WExPTt96tu7tbeyhlRKjk44/NjBlGxIgc/uUvm5qatAcKqjNnzqxevdo6O509e3aEr3cjwqA7c8asWWPlZzIyTHW19kBq3G739OnTh3AVnDBDhEF05YopLjYxMUbEJCYal8tE/JmYr9eDC0tEGBTd3aaiwiQnGxETE2OKiszly9ozhZDBXBk1jBFh4NXUmDlzPOefK1YYXp1/hIeuEX7w4EHtiYKECAPpv/81hYWe/GbONLxPPZDe3t6qqirrQuAOh6OwsLC5uVl7qIAjwsC4edOUlZm4OCNiEhJMWZlhxdaghf5Ht/yLCP2tp8dUVpqJE42IiYoyTqf53/+0Z7Kl5uZmp9NpnZ3OmDEjjNe7EaFf1daaRYs855+LFhmuWj1s/S/nEa7r3YjQT1pajNNpHA4jYiZPNpWVxlYfPgpl1nq35OTkvvVul8PrtWUiHLbOTlNWZkaNMiImPt6Ulhq+ySgArl692rfeLTExMZzWuxHhMPT2mqoqk5ZmRIzDYQoLzfnz2jOFuTNnzqxZs6Zvvdunn36qPZEfEOFQHT1qlizxPP3LzTX792sPFEHcbveMGTPCZr0bEfru4kVTVGSiooyISU01FRUmkpZ3hAjrC3DGjh3bt97t+vXr2kMNERH6oqvLuFxm7FgjYmJjTXGxse1/+PDw7bff9q13S01Ntel6NyIcNLfbTJ/uOf8sKDA2PwUKJ0ePHl2yZIl917sR4SA0NJhVqzz5ZWaaHTu0B8LDrPVuU6dO7VvvduHCBe2hBosIH8v68FF0tBExEyYYl8vwtSchrLOzs2+9W3x8vF3WuxHhI9y9ayoqTFKSETEjRpiiIsMFUWyi/3q3kPrSjkdxGGMkENra5Fe/8mzPnSu//vVgD/ztb+X8ec92ZaWMGDHwIZcvS02N/Oc/8tVX0t4u7e0SGytJSZKcLAsXyqpVsnSpxMX5MHxNjZSUyOnTIiIrV8of/yj3vxkTdrFnz56SkpITJ06ISH5+vsvl6lv+FnICVfe5c54nUSJmzRofDpw713vggOcSra2mqMjzWfXH3JKSTHn5wPdmjPnqK1NQ4Dlq1iw+fGRr1hc5WuvdrC9yDM31bnaO8K9/9SwWG+QtPf1xH6i9ds2Ulno+fDR+vCkv58NH4aH/VxonJiYG7SuNB8+2Ef7+9w8E5nCYvDzzu9+ZbdtMTY2prjZ//7t54w0zefIDu40fb44c+ZF7+8c/PE//oqPN669z7Ynw09jYuHbtWuvsLyMjozqUrq9lzwh37vR8XsG6LVxoamt/fM/ubvPee2bcOO/OU6aYa9ce3u0PfzAiZvly8+WXPowKu9m1a1dmZqaVYkFBwddff609kTG2jLCtzaSmevd5+eWBzxvr6z1/6Kzb+vUP79DVZf79bx+GhG31X+9mXXNZfb2bDSP8zW+8O2Rnm0Ge3+/d61ntad3q630YCWHHWu8WHR0tIbDezW4R3r7tuXCgdfNpgVJRkffAjRt9OBBhqv96t9zc3AMHDqiMERX8N0WGxe2WtjbPdk6O3L9C3qCUlHi3t22TW7f8ORhsKDc3d//+/VVVVWlpadYXY73yyisXLlwI8hh2i/DAAe/2hg2+HZuZKQsWeLbv3JEjR/w2FWzLWmja0NBQVlYWFxe3ffv2rKyszZs337lzJ2gz2C3Cgwe923l5Ph9+/7vURUQOH/bDPAgL8fHxmzdvbmpqcjqdt27d2rJlS3p6+tatW4Pz6HaL0FpKJiIOhwxhFdK8ed7tU6f8MxLCxeTJk7du3bpnz55nn322paXl1Vdfzc/PP378eKAfNybQDyAicvKkvPbaYHduaXnkrzo7pavLsz12rIwe7fMkkyZ5t69e9flwRIDly5fX19d/8MEHmzZt+uyzz3JycjZs2PDOO++kpKQE6iED9YpP/1dHh3x76NXR1tYH3nMfgtpa7z3k5fnlH4pw9dD13dxud4AeyFano/1fzxw5cij3EB/v3e7sHO48CGuJiYnvvvvu6dOn165d29HRkZ6eHqAHCsrp6NSpcn/Z3sD++U9pb//xX40Z490e2hsMHR3e7XHjhnIPiDDp6enV1dUNDQ0ZGRkBeoigRJidLX/+82B3rq19ZISJid7tGzeGMkn/o/rfG/BYWVlZgbtzW52OxsV5zyc7OuT6dZ/vobXVuz1hgn+mAobHVhGKeN+WMEaG8NrxF194t+fO9c9IwPDYLcL+b9DX1fl8eG2td3vRIj/MAwyb3SJcutS7vW2bb8c2NsqxY57thATJyfHbVMAw2C3CggJJTvZsf/HFA3/ZBvSnP3m3nU7fLv0EBIzdIoyLe2DxzeuvS3f3oA48flz+8hfvjz//uZ8HA4bKbhGKSEmJ9C0gOnFCXntNenoGOOT8efnJT+TePc+PP/uZzJkTwAkBX9gwwpQU+dvfvD9u3Sovvihnzz5yf7dbli3zXst06lR5772ADgj4JChv1vvdSy/Jli1SVub5cccOyc6Wl1+WdeskI0NSU+X2bbl8WQ4flo8/fuB5Y1KS/OtfrJVBSLFnhCLy1luSkiK/+IXnXLSrS6qqpKrqcYdMmyY7dsjs2cEZEBgkG56O9nnjDamrk2XLBt4zIUHeektOnqRAhKCA/SVMSJCf/tSz7dM7citXyv1vQpbo6AF2zs2Vffvkyy9lxw7ZuVMaG6WtTaxv14iLk4kTZfFiWb1aCgokKcnXfwEQHAH7Qhgtvb3S3i6jRj3wkQsghIVdhIDd2Pk5IRAWiBBQRoSAMiIElBEhoIwIAWVECCgjQkAZEQLKiBBQRoSAMiIElBEhoIwIAWVECCgjQkAZEQLKiBBQRoSAMiIElBEhoIwIAWVECCgjQkAZEQLKiBBQRoSAMiIElBEhoIwIAWVECCgjQkAZEQLKiBBQRoSAMiIElBEhoIwIAWVECCgjQkAZEQLKiBBQRoSAMiIElBEhoIwIAWVECCgjQkAZEQLKiBBQRoSAMiIElBEhoIwIAWVECCgjQkAZEQLKiBBQRoSAMiIElBEhoIwIAWVECCgjQkAZEQLKiBBQRoSAMiIElBEhoIwIAWVECCgjQkAZEQLKiBBQRoSAMiIElBEhoIwIAWVECCgjQkAZEQLKiBBQRoSAMiIElBEhoIwIAWVECCgjQkAZEQLKiBBQRoSAMiIElBEhoIwIAWVECCgjQkAZEQLKiBBQRoSAMiIElBEhoIwIAWVECCgjQkAZEQLKiBBQRoSAMiIElBEhoIwIAWVECCgjQkDZ/wFdDpQlKBc6wAAAAHF6VFh0cmRraXRQS0wgcmRraXQgMjAyNC4wOS42AAB4nHu/b+09BiAQAGImBghghrIbGNkYEoA0IzOEZmLigPAZuRkYGRiZGJxAqsX1QEIMML0FK2PtX2Rp7wNxzC90W2ZsXmUHYr/aFbv/xW9NsLgYADuJEwfZvZDXAAAAtHpUWHRNT0wgcmRraXQgMjAyNC4wOS42AAB4nH2QQQqDMBBF9znFv0DDJNPGuDRGSikm0NreoXvvTyeKVUE6k8XM5/3hE4VSj3j/jPiVjUoB9OfVdY03E5HqUQaE7npLaIcmLEqbX2l4gmHFIb0nmyH3i2LQgrR3F+8qnEgbV51JHJqmWq12AkWyApJm5mOOkcsd75xhni86OiS7FHdR5nAhp7iGK23XCLKAt/4tXfblE2RWX0QXQ4uktsT0AAAAV3pUWHRTTUlMRVMgcmRraXQgMjAyNC4wOS42AAB4nCXKwQnAIBAEwFbyNHAeq6t7Qp4WkIYs3ki+w8z5XivBh/pQWIYXRbMHDqBKChqc5Gf5NBXyb7J7babWDQWE31iLAAAAAElFTkSuQmCC",
      "image/svg+xml": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 270.1,171.5 L 170.5,113.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 170.5,113.9 L 129.1,137.8' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 129.1,137.8 L 87.6,161.7' style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 175.5,116.8 L 170.5,113.9 L 168.5,115.1' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path class='atom-2' d='M 29.9 157.4\n",
       "L 33.7 157.4\n",
       "L 33.7 169.4\n",
       "L 48.2 169.4\n",
       "L 48.2 157.4\n",
       "L 52.0 157.4\n",
       "L 52.0 185.7\n",
       "L 48.2 185.7\n",
       "L 48.2 172.6\n",
       "L 33.7 172.6\n",
       "L 33.7 185.7\n",
       "L 29.9 185.7\n",
       "L 29.9 157.4\n",
       "' fill='#FF0000'/>\n",
       "<path class='atom-2' d='M 57.8 171.4\n",
       "Q 57.8 164.6, 61.2 160.8\n",
       "Q 64.6 157.0, 70.8 157.0\n",
       "Q 77.1 157.0, 80.5 160.8\n",
       "Q 83.8 164.6, 83.8 171.4\n",
       "Q 83.8 178.3, 80.4 182.2\n",
       "Q 77.0 186.1, 70.8 186.1\n",
       "Q 64.6 186.1, 61.2 182.2\n",
       "Q 57.8 178.4, 57.8 171.4\n",
       "M 70.8 182.9\n",
       "Q 75.2 182.9, 77.5 180.0\n",
       "Q 79.8 177.1, 79.8 171.4\n",
       "Q 79.8 165.9, 77.5 163.1\n",
       "Q 75.2 160.2, 70.8 160.2\n",
       "Q 66.5 160.2, 64.2 163.0\n",
       "Q 61.8 165.8, 61.8 171.4\n",
       "Q 61.8 177.2, 64.2 180.0\n",
       "Q 66.5 182.9, 70.8 182.9\n",
       "' fill='#FF0000'/>\n",
       "</svg>\n"
      ],
      "text/html": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 270.1,171.5 L 170.5,113.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 170.5,113.9 L 129.1,137.8' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 129.1,137.8 L 87.6,161.7' style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 175.5,116.8 L 170.5,113.9 L 168.5,115.1' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path class='atom-2' d='M 29.9 157.4\n",
       "L 33.7 157.4\n",
       "L 33.7 169.4\n",
       "L 48.2 169.4\n",
       "L 48.2 157.4\n",
       "L 52.0 157.4\n",
       "L 52.0 185.7\n",
       "L 48.2 185.7\n",
       "L 48.2 172.6\n",
       "L 33.7 172.6\n",
       "L 33.7 185.7\n",
       "L 29.9 185.7\n",
       "L 29.9 157.4\n",
       "' fill='#FF0000'/>\n",
       "<path class='atom-2' d='M 57.8 171.4\n",
       "Q 57.8 164.6, 61.2 160.8\n",
       "Q 64.6 157.0, 70.8 157.0\n",
       "Q 77.1 157.0, 80.5 160.8\n",
       "Q 83.8 164.6, 83.8 171.4\n",
       "Q 83.8 178.3, 80.4 182.2\n",
       "Q 77.0 186.1, 70.8 186.1\n",
       "Q 64.6 186.1, 61.2 182.2\n",
       "Q 57.8 178.4, 57.8 171.4\n",
       "M 70.8 182.9\n",
       "Q 75.2 182.9, 77.5 180.0\n",
       "Q 79.8 177.1, 79.8 171.4\n",
       "Q 79.8 165.9, 77.5 163.1\n",
       "Q 75.2 160.2, 70.8 160.2\n",
       "Q 66.5 160.2, 64.2 163.0\n",
       "Q 61.8 165.8, 61.8 171.4\n",
       "Q 61.8 177.2, 64.2 180.0\n",
       "Q 66.5 182.9, 70.8 182.9\n",
       "' fill='#FF0000'/>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<rdkit.Chem.rdchem.Mol at 0x34a843530>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ethanol = Chem.MolFromSmiles(\"CCO\")\n",
    "ethanol"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "strategic-boutique",
   "metadata": {},
   "source": [
    "The ethanol example above brings up another interesting point about SMILES, hydrogens are **usually** implicit.  There are a few exceptions that we'll get to later.  Note that when we wrote the SMILES for ethanol, we didn't have to specify the hydrogen on the oxygen.  Oxygen normally has a valence of two, the oxygen in ethanol only has one attached hydrogen, therefore we assume it has one hydrogen attached.  Similarly, the first carbon in ethanol has one other carbon attached, since carbon typically has a valence of four we assume that it has three hydrogens attached.  Neither the hydrogen on the alcohol oxygen nor the carbons needs to be explicitly specified. \n",
    "\n",
    "This brings up another point.  Hydrogen atoms can be used in SMILES, but the hydrogens must be contained within square brackets and associated with a heavy atom.  For instance, it is valid to write the SMILES for ethanol as CC[OH], it's equally valid to write ethanol as [CH3][CH2][OH].  As an exercise, depict the two representations above for ethanol. Note that if you specify the wrong number of explicit hydrogens, the molecule will be considered to be a radical.  Try depicting [CH2][CH2][OH]."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "c10894be",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.727993Z",
     "start_time": "2025-05-05T16:57:14.726524Z"
    }
   },
   "outputs": [],
   "source": [
    "#Write your code here"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "06421bd9",
   "metadata": {},
   "source": [
    "### Charges\n",
    "\n",
    "Positive and negative charges are included by adding \"+\" or \"-\" in square brackets with the atom type. In addition, hydrogens attached to the atom must be explicitly specified. \n",
    "Here's ethylamine"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "526f3c76",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.740605Z",
     "start_time": "2025-05-05T16:57:14.735673Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "image/svg+xml": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 269.0,162.3 L 177.3,109.3' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 177.3,109.3 L 146.9,126.8' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 146.9,126.8 L 116.4,144.3' style='fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 181.9,111.9 L 177.3,109.3 L 175.8,110.1' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path class='atom-2' d='M 31.0 148.0\n",
       "L 34.9 148.0\n",
       "L 34.9 160.0\n",
       "L 49.4 160.0\n",
       "L 49.4 148.0\n",
       "L 53.2 148.0\n",
       "L 53.2 176.3\n",
       "L 49.4 176.3\n",
       "L 49.4 163.2\n",
       "L 34.9 163.2\n",
       "L 34.9 176.3\n",
       "L 31.0 176.3\n",
       "L 31.0 148.0\n",
       "' fill='#0000FF'/>\n",
       "<path class='atom-2' d='M 67.6 180.6\n",
       "Q 69.4 181.2, 70.3 182.3\n",
       "Q 71.2 183.5, 71.2 185.4\n",
       "Q 71.2 186.9, 70.4 188.2\n",
       "Q 69.6 189.4, 68.2 190.1\n",
       "Q 66.7 190.7, 64.8 190.7\n",
       "Q 62.8 190.7, 61.3 190.1\n",
       "Q 59.8 189.3, 58.6 187.9\n",
       "L 60.1 186.4\n",
       "Q 61.3 187.6, 62.3 188.2\n",
       "Q 63.3 188.6, 64.8 188.6\n",
       "Q 66.5 188.6, 67.5 187.7\n",
       "Q 68.6 186.8, 68.6 185.3\n",
       "Q 68.6 183.4, 67.5 182.6\n",
       "Q 66.4 181.7, 64.1 181.7\n",
       "L 62.8 181.7\n",
       "L 62.8 179.8\n",
       "L 64.0 179.8\n",
       "Q 66.0 179.8, 67.1 178.9\n",
       "Q 68.2 178.0, 68.2 176.3\n",
       "Q 68.2 175.1, 67.3 174.4\n",
       "Q 66.4 173.7, 64.8 173.7\n",
       "Q 63.3 173.7, 62.3 174.2\n",
       "Q 61.4 174.8, 60.6 176.2\n",
       "L 58.8 175.2\n",
       "Q 59.4 173.7, 61.0 172.6\n",
       "Q 62.6 171.6, 64.8 171.6\n",
       "Q 67.6 171.6, 69.2 172.9\n",
       "Q 70.8 174.2, 70.8 176.3\n",
       "Q 70.8 177.9, 70.0 178.9\n",
       "Q 69.2 180.0, 67.6 180.6\n",
       "' fill='#0000FF'/>\n",
       "<path class='atom-2' d='M 79.3 148.0\n",
       "L 88.5 163.0\n",
       "Q 89.5 164.5, 90.9 167.2\n",
       "Q 92.4 169.8, 92.5 170.0\n",
       "L 92.5 148.0\n",
       "L 96.3 148.0\n",
       "L 96.3 176.3\n",
       "L 92.4 176.3\n",
       "L 82.4 159.9\n",
       "Q 81.3 158.0, 80.0 155.8\n",
       "Q 78.8 153.6, 78.5 152.9\n",
       "L 78.5 176.3\n",
       "L 74.8 176.3\n",
       "L 74.8 148.0\n",
       "L 79.3 148.0\n",
       "' fill='#0000FF'/>\n",
       "<path class='atom-2' d='M 101.6 153.1\n",
       "L 106.6 153.1\n",
       "L 106.6 147.8\n",
       "L 108.8 147.8\n",
       "L 108.8 153.1\n",
       "L 114.0 153.1\n",
       "L 114.0 155.0\n",
       "L 108.8 155.0\n",
       "L 108.8 160.3\n",
       "L 106.6 160.3\n",
       "L 106.6 155.0\n",
       "L 101.6 155.0\n",
       "L 101.6 153.1\n",
       "' fill='#0000FF'/>\n",
       "</svg>\n"
      ],
      "text/html": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 269.0,162.3 L 177.3,109.3' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 177.3,109.3 L 146.9,126.8' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 146.9,126.8 L 116.4,144.3' style='fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 181.9,111.9 L 177.3,109.3 L 175.8,110.1' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path class='atom-2' d='M 31.0 148.0\n",
       "L 34.9 148.0\n",
       "L 34.9 160.0\n",
       "L 49.4 160.0\n",
       "L 49.4 148.0\n",
       "L 53.2 148.0\n",
       "L 53.2 176.3\n",
       "L 49.4 176.3\n",
       "L 49.4 163.2\n",
       "L 34.9 163.2\n",
       "L 34.9 176.3\n",
       "L 31.0 176.3\n",
       "L 31.0 148.0\n",
       "' fill='#0000FF'/>\n",
       "<path class='atom-2' d='M 67.6 180.6\n",
       "Q 69.4 181.2, 70.3 182.3\n",
       "Q 71.2 183.5, 71.2 185.4\n",
       "Q 71.2 186.9, 70.4 188.2\n",
       "Q 69.6 189.4, 68.2 190.1\n",
       "Q 66.7 190.7, 64.8 190.7\n",
       "Q 62.8 190.7, 61.3 190.1\n",
       "Q 59.8 189.3, 58.6 187.9\n",
       "L 60.1 186.4\n",
       "Q 61.3 187.6, 62.3 188.2\n",
       "Q 63.3 188.6, 64.8 188.6\n",
       "Q 66.5 188.6, 67.5 187.7\n",
       "Q 68.6 186.8, 68.6 185.3\n",
       "Q 68.6 183.4, 67.5 182.6\n",
       "Q 66.4 181.7, 64.1 181.7\n",
       "L 62.8 181.7\n",
       "L 62.8 179.8\n",
       "L 64.0 179.8\n",
       "Q 66.0 179.8, 67.1 178.9\n",
       "Q 68.2 178.0, 68.2 176.3\n",
       "Q 68.2 175.1, 67.3 174.4\n",
       "Q 66.4 173.7, 64.8 173.7\n",
       "Q 63.3 173.7, 62.3 174.2\n",
       "Q 61.4 174.8, 60.6 176.2\n",
       "L 58.8 175.2\n",
       "Q 59.4 173.7, 61.0 172.6\n",
       "Q 62.6 171.6, 64.8 171.6\n",
       "Q 67.6 171.6, 69.2 172.9\n",
       "Q 70.8 174.2, 70.8 176.3\n",
       "Q 70.8 177.9, 70.0 178.9\n",
       "Q 69.2 180.0, 67.6 180.6\n",
       "' fill='#0000FF'/>\n",
       "<path class='atom-2' d='M 79.3 148.0\n",
       "L 88.5 163.0\n",
       "Q 89.5 164.5, 90.9 167.2\n",
       "Q 92.4 169.8, 92.5 170.0\n",
       "L 92.5 148.0\n",
       "L 96.3 148.0\n",
       "L 96.3 176.3\n",
       "L 92.4 176.3\n",
       "L 82.4 159.9\n",
       "Q 81.3 158.0, 80.0 155.8\n",
       "Q 78.8 153.6, 78.5 152.9\n",
       "L 78.5 176.3\n",
       "L 74.8 176.3\n",
       "L 74.8 148.0\n",
       "L 79.3 148.0\n",
       "' fill='#0000FF'/>\n",
       "<path class='atom-2' d='M 101.6 153.1\n",
       "L 106.6 153.1\n",
       "L 106.6 147.8\n",
       "L 108.8 147.8\n",
       "L 108.8 153.1\n",
       "L 114.0 153.1\n",
       "L 114.0 155.0\n",
       "L 108.8 155.0\n",
       "L 108.8 160.3\n",
       "L 106.6 160.3\n",
       "L 106.6 155.0\n",
       "L 101.6 155.0\n",
       "L 101.6 153.1\n",
       "' fill='#0000FF'/>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<rdkit.Chem.rdchem.Mol at 0x34a843a70>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ethylamine = Chem.MolFromSmiles(\"CC[NH3+]\")\n",
    "ethylamine"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0baa9b25",
   "metadata": {},
   "source": [
    "Here's acetate, more on parentheses and branching below."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "0f52827a",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.755083Z",
     "start_time": "2025-05-05T16:57:14.750224Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "image/svg+xml": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 27.0,244.1 L 136.9,181.2' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 146.3,186.8 L 146.5,130.2' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 146.5,130.2 L 146.7,73.6' style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 127.4,186.7 L 127.6,130.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 127.6,130.1 L 127.8,73.5' style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-1 atom-3' d='M 136.9,181.2 L 183.0,208.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-1 atom-3' d='M 183.0,208.1 L 229.1,234.9' style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 131.4,184.4 L 136.9,181.2 L 139.2,182.6' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path class='atom-2' d='M 124.3 54.7\n",
       "Q 124.3 47.9, 127.7 44.1\n",
       "Q 131.0 40.3, 137.3 40.3\n",
       "Q 143.6 40.3, 147.0 44.1\n",
       "Q 150.3 47.9, 150.3 54.7\n",
       "Q 150.3 61.6, 146.9 65.5\n",
       "Q 143.5 69.4, 137.3 69.4\n",
       "Q 131.1 69.4, 127.7 65.5\n",
       "Q 124.3 61.6, 124.3 54.7\n",
       "M 137.3 66.2\n",
       "Q 141.6 66.2, 144.0 63.3\n",
       "Q 146.3 60.4, 146.3 54.7\n",
       "Q 146.3 49.2, 144.0 46.4\n",
       "Q 141.6 43.5, 137.3 43.5\n",
       "Q 133.0 43.5, 130.6 46.3\n",
       "Q 128.3 49.1, 128.3 54.7\n",
       "Q 128.3 60.4, 130.6 63.3\n",
       "Q 133.0 66.2, 137.3 66.2\n",
       "' fill='#FF0000'/>\n",
       "<path class='atom-3' d='M 233.3 245.0\n",
       "Q 233.3 238.2, 236.6 234.4\n",
       "Q 240.0 230.6, 246.3 230.6\n",
       "Q 252.5 230.6, 255.9 234.4\n",
       "Q 259.3 238.2, 259.3 245.0\n",
       "Q 259.3 251.9, 255.9 255.8\n",
       "Q 252.5 259.7, 246.3 259.7\n",
       "Q 240.0 259.7, 236.6 255.8\n",
       "Q 233.3 251.9, 233.3 245.0\n",
       "M 246.3 256.5\n",
       "Q 250.6 256.5, 252.9 253.6\n",
       "Q 255.3 250.7, 255.3 245.0\n",
       "Q 255.3 239.4, 252.9 236.6\n",
       "Q 250.6 233.8, 246.3 233.8\n",
       "Q 241.9 233.8, 239.6 236.6\n",
       "Q 237.3 239.4, 237.3 245.0\n",
       "Q 237.3 250.7, 239.6 253.6\n",
       "Q 241.9 256.5, 246.3 256.5\n",
       "' fill='#FF0000'/>\n",
       "<path class='atom-3' d='M 263.3 235.2\n",
       "L 273.0 235.2\n",
       "L 273.0 237.3\n",
       "L 263.3 237.3\n",
       "L 263.3 235.2\n",
       "' fill='#FF0000'/>\n",
       "</svg>\n"
      ],
      "text/html": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 27.0,244.1 L 136.9,181.2' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 146.3,186.8 L 146.5,130.2' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 146.5,130.2 L 146.7,73.6' style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 127.4,186.7 L 127.6,130.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 127.6,130.1 L 127.8,73.5' style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-1 atom-3' d='M 136.9,181.2 L 183.0,208.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-1 atom-3' d='M 183.0,208.1 L 229.1,234.9' style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 131.4,184.4 L 136.9,181.2 L 139.2,182.6' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path class='atom-2' d='M 124.3 54.7\n",
       "Q 124.3 47.9, 127.7 44.1\n",
       "Q 131.0 40.3, 137.3 40.3\n",
       "Q 143.6 40.3, 147.0 44.1\n",
       "Q 150.3 47.9, 150.3 54.7\n",
       "Q 150.3 61.6, 146.9 65.5\n",
       "Q 143.5 69.4, 137.3 69.4\n",
       "Q 131.1 69.4, 127.7 65.5\n",
       "Q 124.3 61.6, 124.3 54.7\n",
       "M 137.3 66.2\n",
       "Q 141.6 66.2, 144.0 63.3\n",
       "Q 146.3 60.4, 146.3 54.7\n",
       "Q 146.3 49.2, 144.0 46.4\n",
       "Q 141.6 43.5, 137.3 43.5\n",
       "Q 133.0 43.5, 130.6 46.3\n",
       "Q 128.3 49.1, 128.3 54.7\n",
       "Q 128.3 60.4, 130.6 63.3\n",
       "Q 133.0 66.2, 137.3 66.2\n",
       "' fill='#FF0000'/>\n",
       "<path class='atom-3' d='M 233.3 245.0\n",
       "Q 233.3 238.2, 236.6 234.4\n",
       "Q 240.0 230.6, 246.3 230.6\n",
       "Q 252.5 230.6, 255.9 234.4\n",
       "Q 259.3 238.2, 259.3 245.0\n",
       "Q 259.3 251.9, 255.9 255.8\n",
       "Q 252.5 259.7, 246.3 259.7\n",
       "Q 240.0 259.7, 236.6 255.8\n",
       "Q 233.3 251.9, 233.3 245.0\n",
       "M 246.3 256.5\n",
       "Q 250.6 256.5, 252.9 253.6\n",
       "Q 255.3 250.7, 255.3 245.0\n",
       "Q 255.3 239.4, 252.9 236.6\n",
       "Q 250.6 233.8, 246.3 233.8\n",
       "Q 241.9 233.8, 239.6 236.6\n",
       "Q 237.3 239.4, 237.3 245.0\n",
       "Q 237.3 250.7, 239.6 253.6\n",
       "Q 241.9 256.5, 246.3 256.5\n",
       "' fill='#FF0000'/>\n",
       "<path class='atom-3' d='M 263.3 235.2\n",
       "L 273.0 235.2\n",
       "L 273.0 237.3\n",
       "L 263.3 237.3\n",
       "L 263.3 235.2\n",
       "' fill='#FF0000'/>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<rdkit.Chem.rdchem.Mol at 0x34a843ca0>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "acetate = Chem.MolFromSmiles(\"CC(=O)[O-]\")\n",
    "acetate"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2abd1eb3",
   "metadata": {},
   "source": [
    "### Disconnected Structures\n",
    "\n",
    "In some cases, a molecule may contain multiple entities that are not connected by a covalent bond.  In SMILES, the two entities are represented as two SMILES separated by a \".\".  For instance, let's look at acetate with a sodium salt.  The positioning of the sodium salt in the depiction isn't ideal but the SMILES is valid. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "e3129715",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.767606Z",
     "start_time": "2025-05-05T16:57:14.761791Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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bdvy8vKIaO/evQsXLpwwYYLorbW0tOTk5Jw/f/7q1atVVVVqtdrb27tv377jxo2bNWvWQOP/q0pKygizsrJWrFiRn59PRNOmTUtOTta+YS70SFMTHT2qWXZ0pNhYE9b18aH58yktTXPzyJEOEVo9Jyen7du3T506lYja29vj4uIuXryoUChM3U5ubu6OHTu+++672trarn7Qm2++uX379sfPDTh9+vTBgwe1N4V/EUpKSpYuXaq909PTc8uWLabOSkOSJ7UFBQWzZs0SNhgcHIz3ipdYTo5uV23iRJNXz8jQrT5lihnmJyX9fcK5c+cKd86ZM0d755YtWx5fy/A+YXNzs7+/vzE5DB8+/P79+4+snpqa2u2KvXv3Fv0r9/SRsKqqav369SkpKa2trX5+fh9//PGqVatcXFx6uFno4LffdMvh4SavPm6cbvn8eWprs4b9PZNs3bo1IyOjubmZiBISEubOnat9uz1juLq6vvvuu0lJSQqFIiIiYurUqaGhof7+/gqForS09PTp01988YXwCFlYWLhixYoDBw7orz5z5szvv/9ee/PEiRN79uwZOnToZ599pr2zR3/zovMVjv4JJ+k5OzvHxcWVl5eL3hoYEh+veyhLSRGzhcBA3Ras+2PeOn0kZIytXbtWe//s2bMfWavbV0dv3779ySefdPURd9euXdOeburs7Hzv3j0DM5T81VGRH5edn58fGhq6cuXKmpqaqKioK1eupKamBgQEiNsadKOmRrdsxNnMndBfS39rtmPt2rXadxv64YcflEqlSasPGjRozZo1gYGBnX53xIgR8fHxwnJra+upU6d6MlVTiYxwyJAhTU1NI0aMSE9PP3bsWEhIiLTTgg6qq3XLPj5itqB/eYr+1myHu7v7tm3btDeXLVvW0NAg4fanTJmiXRZeerEYkRF6eHhkZmZevXo1Ojpa2glBJ/QvN3MU9b9M/yBtW1tP58PJa6+9pv17u3379vr16yXceP/+/bXLVVVVEm65W+JfmBk5cqSE8wBD9K+OE474mUr/KahxrxNap507d548eVKlUhFRcnLyokWLxB0Ga21tLSoqqq+v1x6xuHfvnva7witAXQkNDV2yZIn2VJ6ew1kstkD/yWQXh7m6UVenW7atC147Gjx48OrVqxMSEoiotbV15cqVP/74o/Gr37x5c//+/enp6VeuXGlp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",
      "image/svg+xml": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 19.1,207.5 L 86.3,169.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 92.1,172.4 L 92.2,140.7' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 92.2,140.7 L 92.3,108.9' style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 80.5,172.4 L 80.6,140.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 80.6,140.6 L 80.7,108.9' style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-1 atom-3' d='M 86.3,169.0 L 112.0,184.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-1 atom-3' d='M 112.0,184.0 L 137.7,198.9' style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 82.9,171.0 L 86.3,169.0 L 87.6,169.8' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path class='atom-2' d='M 73.6 91.6\n",
       "Q 73.6 84.8, 76.9 81.0\n",
       "Q 80.3 77.2, 86.6 77.2\n",
       "Q 92.9 77.2, 96.2 81.0\n",
       "Q 99.6 84.8, 99.6 91.6\n",
       "Q 99.6 98.5, 96.2 102.4\n",
       "Q 92.8 106.3, 86.6 106.3\n",
       "Q 80.3 106.3, 76.9 102.4\n",
       "Q 73.6 98.6, 73.6 91.6\n",
       "M 86.6 103.1\n",
       "Q 90.9 103.1, 93.2 100.2\n",
       "Q 95.6 97.3, 95.6 91.6\n",
       "Q 95.6 86.1, 93.2 83.3\n",
       "Q 90.9 80.4, 86.6 80.4\n",
       "Q 82.3 80.4, 79.9 83.2\n",
       "Q 77.6 86.0, 77.6 91.6\n",
       "Q 77.6 97.4, 79.9 100.2\n",
       "Q 82.3 103.1, 86.6 103.1\n",
       "' fill='#FF0000'/>\n",
       "<path class='atom-3' d='M 140.3 208.1\n",
       "Q 140.3 201.3, 143.6 197.5\n",
       "Q 147.0 193.7, 153.3 193.7\n",
       "Q 159.5 193.7, 162.9 197.5\n",
       "Q 166.3 201.3, 166.3 208.1\n",
       "Q 166.3 215.0, 162.9 218.9\n",
       "Q 159.5 222.8, 153.3 222.8\n",
       "Q 147.0 222.8, 143.6 218.9\n",
       "Q 140.3 215.0, 140.3 208.1\n",
       "M 153.3 219.6\n",
       "Q 157.6 219.6, 159.9 216.7\n",
       "Q 162.3 213.8, 162.3 208.1\n",
       "Q 162.3 202.5, 159.9 199.7\n",
       "Q 157.6 196.9, 153.3 196.9\n",
       "Q 148.9 196.9, 146.6 199.7\n",
       "Q 144.3 202.5, 144.3 208.1\n",
       "Q 144.3 213.8, 146.6 216.7\n",
       "Q 148.9 219.6, 153.3 219.6\n",
       "' fill='#FF0000'/>\n",
       "<path class='atom-3' d='M 170.3 198.3\n",
       "L 180.0 198.3\n",
       "L 180.0 200.4\n",
       "L 170.3 200.4\n",
       "L 170.3 198.3\n",
       "' fill='#FF0000'/>\n",
       "<path class='atom-4' d='M 224.5 193.8\n",
       "L 233.8 208.8\n",
       "Q 234.7 210.3, 236.2 213.0\n",
       "Q 237.6 215.7, 237.7 215.8\n",
       "L 237.7 193.8\n",
       "L 241.5 193.8\n",
       "L 241.5 222.2\n",
       "L 237.6 222.2\n",
       "L 227.6 205.8\n",
       "Q 226.5 203.8, 225.2 201.6\n",
       "Q 224.0 199.4, 223.7 198.8\n",
       "L 223.7 222.2\n",
       "L 220.0 222.2\n",
       "L 220.0 193.8\n",
       "L 224.5 193.8\n",
       "' fill='#000000'/>\n",
       "<path class='atom-4' d='M 246.7 216.6\n",
       "Q 246.7 213.3, 249.3 211.5\n",
       "Q 252.0 209.7, 256.8 209.7\n",
       "L 259.9 209.7\n",
       "L 259.9 208.9\n",
       "Q 259.9 206.4, 258.8 205.3\n",
       "Q 257.7 204.2, 255.2 204.2\n",
       "Q 253.5 204.2, 252.3 204.5\n",
       "Q 251.0 204.8, 249.0 205.7\n",
       "L 247.9 203.1\n",
       "Q 251.6 201.2, 255.3 201.2\n",
       "Q 259.6 201.2, 261.6 203.1\n",
       "Q 263.6 205.0, 263.6 209.0\n",
       "L 263.6 222.2\n",
       "L 260.7 222.2\n",
       "Q 260.7 222.0, 260.5 221.4\n",
       "Q 260.4 220.8, 260.2 219.8\n",
       "Q 257.3 222.6, 253.5 222.6\n",
       "Q 250.4 222.6, 248.5 221.0\n",
       "Q 246.7 219.4, 246.7 216.6\n",
       "M 250.5 216.5\n",
       "Q 250.5 218.0, 251.4 218.9\n",
       "Q 252.4 219.7, 254.2 219.7\n",
       "Q 255.8 219.7, 257.3 219.0\n",
       "Q 258.8 218.2, 259.9 216.9\n",
       "L 259.9 212.5\n",
       "L 257.1 212.5\n",
       "Q 253.8 212.5, 252.1 213.5\n",
       "Q 250.5 214.5, 250.5 216.5\n",
       "' fill='#000000'/>\n",
       "<path class='atom-4' d='M 268.6 202.4\n",
       "L 273.6 202.4\n",
       "L 273.6 197.2\n",
       "L 275.8 197.2\n",
       "L 275.8 202.4\n",
       "L 280.9 202.4\n",
       "L 280.9 204.3\n",
       "L 275.8 204.3\n",
       "L 275.8 209.6\n",
       "L 273.6 209.6\n",
       "L 273.6 204.3\n",
       "L 268.6 204.3\n",
       "L 268.6 202.4\n",
       "' fill='#000000'/>\n",
       "</svg>\n"
      ],
      "text/html": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 19.1,207.5 L 86.3,169.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 92.1,172.4 L 92.2,140.7' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 92.2,140.7 L 92.3,108.9' style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 80.5,172.4 L 80.6,140.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 80.6,140.6 L 80.7,108.9' style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-1 atom-3' d='M 86.3,169.0 L 112.0,184.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-1 atom-3' d='M 112.0,184.0 L 137.7,198.9' style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 82.9,171.0 L 86.3,169.0 L 87.6,169.8' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path class='atom-2' d='M 73.6 91.6\n",
       "Q 73.6 84.8, 76.9 81.0\n",
       "Q 80.3 77.2, 86.6 77.2\n",
       "Q 92.9 77.2, 96.2 81.0\n",
       "Q 99.6 84.8, 99.6 91.6\n",
       "Q 99.6 98.5, 96.2 102.4\n",
       "Q 92.8 106.3, 86.6 106.3\n",
       "Q 80.3 106.3, 76.9 102.4\n",
       "Q 73.6 98.6, 73.6 91.6\n",
       "M 86.6 103.1\n",
       "Q 90.9 103.1, 93.2 100.2\n",
       "Q 95.6 97.3, 95.6 91.6\n",
       "Q 95.6 86.1, 93.2 83.3\n",
       "Q 90.9 80.4, 86.6 80.4\n",
       "Q 82.3 80.4, 79.9 83.2\n",
       "Q 77.6 86.0, 77.6 91.6\n",
       "Q 77.6 97.4, 79.9 100.2\n",
       "Q 82.3 103.1, 86.6 103.1\n",
       "' fill='#FF0000'/>\n",
       "<path class='atom-3' d='M 140.3 208.1\n",
       "Q 140.3 201.3, 143.6 197.5\n",
       "Q 147.0 193.7, 153.3 193.7\n",
       "Q 159.5 193.7, 162.9 197.5\n",
       "Q 166.3 201.3, 166.3 208.1\n",
       "Q 166.3 215.0, 162.9 218.9\n",
       "Q 159.5 222.8, 153.3 222.8\n",
       "Q 147.0 222.8, 143.6 218.9\n",
       "Q 140.3 215.0, 140.3 208.1\n",
       "M 153.3 219.6\n",
       "Q 157.6 219.6, 159.9 216.7\n",
       "Q 162.3 213.8, 162.3 208.1\n",
       "Q 162.3 202.5, 159.9 199.7\n",
       "Q 157.6 196.9, 153.3 196.9\n",
       "Q 148.9 196.9, 146.6 199.7\n",
       "Q 144.3 202.5, 144.3 208.1\n",
       "Q 144.3 213.8, 146.6 216.7\n",
       "Q 148.9 219.6, 153.3 219.6\n",
       "' fill='#FF0000'/>\n",
       "<path class='atom-3' d='M 170.3 198.3\n",
       "L 180.0 198.3\n",
       "L 180.0 200.4\n",
       "L 170.3 200.4\n",
       "L 170.3 198.3\n",
       "' fill='#FF0000'/>\n",
       "<path class='atom-4' d='M 224.5 193.8\n",
       "L 233.8 208.8\n",
       "Q 234.7 210.3, 236.2 213.0\n",
       "Q 237.6 215.7, 237.7 215.8\n",
       "L 237.7 193.8\n",
       "L 241.5 193.8\n",
       "L 241.5 222.2\n",
       "L 237.6 222.2\n",
       "L 227.6 205.8\n",
       "Q 226.5 203.8, 225.2 201.6\n",
       "Q 224.0 199.4, 223.7 198.8\n",
       "L 223.7 222.2\n",
       "L 220.0 222.2\n",
       "L 220.0 193.8\n",
       "L 224.5 193.8\n",
       "' fill='#000000'/>\n",
       "<path class='atom-4' d='M 246.7 216.6\n",
       "Q 246.7 213.3, 249.3 211.5\n",
       "Q 252.0 209.7, 256.8 209.7\n",
       "L 259.9 209.7\n",
       "L 259.9 208.9\n",
       "Q 259.9 206.4, 258.8 205.3\n",
       "Q 257.7 204.2, 255.2 204.2\n",
       "Q 253.5 204.2, 252.3 204.5\n",
       "Q 251.0 204.8, 249.0 205.7\n",
       "L 247.9 203.1\n",
       "Q 251.6 201.2, 255.3 201.2\n",
       "Q 259.6 201.2, 261.6 203.1\n",
       "Q 263.6 205.0, 263.6 209.0\n",
       "L 263.6 222.2\n",
       "L 260.7 222.2\n",
       "Q 260.7 222.0, 260.5 221.4\n",
       "Q 260.4 220.8, 260.2 219.8\n",
       "Q 257.3 222.6, 253.5 222.6\n",
       "Q 250.4 222.6, 248.5 221.0\n",
       "Q 246.7 219.4, 246.7 216.6\n",
       "M 250.5 216.5\n",
       "Q 250.5 218.0, 251.4 218.9\n",
       "Q 252.4 219.7, 254.2 219.7\n",
       "Q 255.8 219.7, 257.3 219.0\n",
       "Q 258.8 218.2, 259.9 216.9\n",
       "L 259.9 212.5\n",
       "L 257.1 212.5\n",
       "Q 253.8 212.5, 252.1 213.5\n",
       "Q 250.5 214.5, 250.5 216.5\n",
       "' fill='#000000'/>\n",
       "<path class='atom-4' d='M 268.6 202.4\n",
       "L 273.6 202.4\n",
       "L 273.6 197.2\n",
       "L 275.8 197.2\n",
       "L 275.8 202.4\n",
       "L 280.9 202.4\n",
       "L 280.9 204.3\n",
       "L 275.8 204.3\n",
       "L 275.8 209.6\n",
       "L 273.6 209.6\n",
       "L 273.6 204.3\n",
       "L 268.6 204.3\n",
       "L 268.6 202.4\n",
       "' fill='#000000'/>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<rdkit.Chem.rdchem.Mol at 0x34a843d80>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "acetate_salt = Chem.MolFromSmiles(\"CC(=O)[O-].[Na+]\")\n",
    "acetate_salt"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "black-astronomy",
   "metadata": {},
   "source": [
    "### Branching\n",
    "\n",
    "Branching in SMILES is indicated with parentheses.  For instance, one can depict acetone using the SMILES \"CC(=O)C\". Note how the parentheses are used to indicate the branching in the carbonyl."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "gothic-passenger",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.781639Z",
     "start_time": "2025-05-05T16:57:14.776817Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "image/svg+xml": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 285.0,274.3 L 150.3,195.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 161.9,202.7 L 162.2,131.3' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 162.2,131.3 L 162.5,60.0' style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 138.6,202.6 L 138.8,131.2' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 138.8,131.2 L 139.1,59.9' style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-1 atom-3' d='M 150.3,195.9 L 15.0,273.3' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 157.0,199.8 L 150.3,195.9 L 143.5,199.8' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path class='atom-2' d='M 137.8 40.1\n",
       "Q 137.8 33.3, 141.2 29.5\n",
       "Q 144.6 25.7, 150.8 25.7\n",
       "Q 157.1 25.7, 160.5 29.5\n",
       "Q 163.8 33.3, 163.8 40.1\n",
       "Q 163.8 47.0, 160.4 50.9\n",
       "Q 157.0 54.8, 150.8 54.8\n",
       "Q 144.6 54.8, 141.2 50.9\n",
       "Q 137.8 47.0, 137.8 40.1\n",
       "M 150.8 51.6\n",
       "Q 155.2 51.6, 157.5 48.7\n",
       "Q 159.8 45.8, 159.8 40.1\n",
       "Q 159.8 34.5, 157.5 31.7\n",
       "Q 155.2 28.9, 150.8 28.9\n",
       "Q 146.5 28.9, 144.2 31.7\n",
       "Q 141.8 34.5, 141.8 40.1\n",
       "Q 141.8 45.8, 144.2 48.7\n",
       "Q 146.5 51.6, 150.8 51.6\n",
       "' fill='#FF0000'/>\n",
       "</svg>\n"
      ],
      "text/html": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 285.0,274.3 L 150.3,195.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 161.9,202.7 L 162.2,131.3' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 162.2,131.3 L 162.5,60.0' style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 138.6,202.6 L 138.8,131.2' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 138.8,131.2 L 139.1,59.9' style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-1 atom-3' d='M 150.3,195.9 L 15.0,273.3' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 157.0,199.8 L 150.3,195.9 L 143.5,199.8' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path class='atom-2' d='M 137.8 40.1\n",
       "Q 137.8 33.3, 141.2 29.5\n",
       "Q 144.6 25.7, 150.8 25.7\n",
       "Q 157.1 25.7, 160.5 29.5\n",
       "Q 163.8 33.3, 163.8 40.1\n",
       "Q 163.8 47.0, 160.4 50.9\n",
       "Q 157.0 54.8, 150.8 54.8\n",
       "Q 144.6 54.8, 141.2 50.9\n",
       "Q 137.8 47.0, 137.8 40.1\n",
       "M 150.8 51.6\n",
       "Q 155.2 51.6, 157.5 48.7\n",
       "Q 159.8 45.8, 159.8 40.1\n",
       "Q 159.8 34.5, 157.5 31.7\n",
       "Q 155.2 28.9, 150.8 28.9\n",
       "Q 146.5 28.9, 144.2 31.7\n",
       "Q 141.8 34.5, 141.8 40.1\n",
       "Q 141.8 45.8, 144.2 48.7\n",
       "Q 146.5 51.6, 150.8 51.6\n",
       "' fill='#FF0000'/>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<rdkit.Chem.rdchem.Mol at 0x34a843f40>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "acetone = Chem.MolFromSmiles(\"CC(=O)C\")\n",
    "acetone"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b7400e5b",
   "metadata": {},
   "source": [
    "Let's take a look at a few more examples.  In order to look at more than one example, we'll put the SMILES and the names of the associated molecules into a text buffer. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "impressed-prize",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.795079Z",
     "start_time": "2025-05-05T16:57:14.793334Z"
    }
   },
   "outputs": [],
   "source": [
    "# define a text buffer for our examples\n",
    "examples = \"\"\"C(C)(C)O isopropanol\n",
    "C(Cl)(Cl)(Cl)Cl carbon tetrachloride\n",
    "CC(=O)O acetic acid\"\"\"\n",
    "# not that we use the second argumen to split to only return two tokens\n",
    "smiles_list = [x.split(\" \",1) for x in examples.split(\"\\n\")]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "10155939",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.801463Z",
     "start_time": "2025-05-05T16:57:14.799431Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[['C(C)(C)O', 'isopropanol'],\n",
       " ['C(Cl)(Cl)(Cl)Cl', 'carbon tetrachloride'],\n",
       " ['CC(=O)O', 'acetic acid']]"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "smiles_list"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "valuable-construction",
   "metadata": {},
   "source": [
    "In order to make our lives a little easier, we're going to define a function that will use the MolsToGridImage function from the  RDKit to display multiple structures. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "overall-technique",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.812439Z",
     "start_time": "2025-05-05T16:57:14.810697Z"
    }
   },
   "outputs": [],
   "source": [
    "from rdkit.Chem.Draw import MolsToGridImage\n",
    "\n",
    "def display_structures(smiles_list):\n",
    "    mol_list = []\n",
    "    name_list = []\n",
    "    for smiles, name in smiles_list:\n",
    "        mol_list.append(Chem.MolFromSmiles(smiles))\n",
    "        name_list.append(name)\n",
    "    return MolsToGridImage(mol_list,legends=name_list,molsPerRow=4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "e1b5a8a7",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.822363Z",
     "start_time": "2025-05-05T16:57:14.817657Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:rdkit=\"http://www.rdkit.org/xml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" baseProfile=\"full\" xml:space=\"preserve\" width=\"800px\" height=\"200px\" viewBox=\"0 0 800 200\">\n",
       "<!-- END OF HEADER -->\n",
       "<rect style=\"opacity:1.0;fill:#FFFFFF;stroke:none\" width=\"200.0\" height=\"200.0\" x=\"0.0\" y=\"0.0\"> </rect>\n",
       "<path class=\"bond-0 atom-0 atom-1\" d=\"M 100.1,116.9 L 165.2,154.7\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-1 atom-0 atom-2\" d=\"M 100.1,116.9 L 34.8,154.2\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-2 atom-0 atom-3\" d=\"M 100.1,116.9 L 100.2,87.9\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-2 atom-0 atom-3\" d=\"M 100.2,87.9 L 100.3,58.9\" style=\"fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"atom-3\" d=\"M 87.4 41.7 Q 87.4 34.9, 90.8 31.1 Q 94.1 27.3, 100.4 27.3 Q 106.7 27.3, 110.0 31.1 Q 113.4 34.9, 113.4 41.7 Q 113.4 48.6, 110.0 52.5 Q 106.6 56.4, 100.4 56.4 Q 94.2 56.4, 90.8 52.5 Q 87.4 48.6, 87.4 41.7 M 100.4 53.2 Q 104.7 53.2, 107.0 50.3 Q 109.4 47.4, 109.4 41.7 Q 109.4 36.1, 107.0 33.3 Q 104.7 30.5, 100.4 30.5 Q 96.1 30.5, 93.7 33.3 Q 91.4 36.1, 91.4 41.7 Q 91.4 47.4, 93.7 50.3 Q 96.1 53.2, 100.4 53.2 \" fill=\"#FF0000\"/>\n",
       "<path class=\"atom-3\" d=\"M 117.8 27.6 L 121.7 27.6 L 121.7 39.7 L 136.1 39.7 L 136.1 27.6 L 140.0 27.6 L 140.0 55.9 L 136.1 55.9 L 136.1 42.9 L 121.7 42.9 L 121.7 55.9 L 117.8 55.9 L 117.8 27.6 \" fill=\"#FF0000\"/>\n",
       "<path class=\"legend\" d=\"M 60.0 174.8 L 61.4 174.8 L 61.4 176.1 L 60.0 176.1 L 60.0 174.8 M 60.0 177.9 L 61.4 177.9 L 61.4 186.1 L 60.0 186.1 L 60.0 177.9 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 63.9 184.4 Q 64.6 184.7, 65.1 184.8 Q 65.6 185.0, 66.2 185.0 Q 66.9 185.0, 67.3 184.7 Q 67.7 184.4, 67.7 183.8 Q 67.7 183.4, 67.5 183.2 Q 67.3 182.9, 67.0 182.8 Q 66.8 182.7, 66.0 182.5 Q 65.9 182.4, 65.2 182.2 Q 64.5 181.9, 64.1 181.4 Q 63.7 180.8, 63.7 180.0 Q 63.7 179.1, 64.4 178.4 Q 65.2 177.7, 66.7 177.7 Q 67.3 177.7, 67.9 177.9 Q 68.4 178.0, 69.0 178.2 L 68.6 179.4 Q 68.1 179.2, 67.6 179.1 Q 67.2 179.0, 66.7 179.0 Q 65.9 179.0, 65.6 179.3 Q 65.2 179.6, 65.2 180.0 Q 65.2 180.5, 65.5 180.7 Q 65.8 180.9, 66.5 181.2 Q 66.6 181.2, 66.8 181.3 L 67.2 181.4 Q 67.8 181.6, 68.2 181.9 Q 68.6 182.1, 68.9 182.5 Q 69.2 183.0, 69.2 183.7 Q 69.2 184.9, 68.4 185.6 Q 67.5 186.2, 66.2 186.2 Q 65.4 186.2, 64.7 186.1 Q 64.1 185.9, 63.4 185.6 L 63.9 184.4 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 70.7 182.0 Q 70.7 180.0, 71.7 178.8 Q 72.7 177.7, 74.6 177.7 Q 76.4 177.7, 77.5 178.8 Q 78.5 180.0, 78.5 182.0 Q 78.5 184.0, 77.5 185.1 Q 76.4 186.2, 74.6 186.2 Q 72.7 186.2, 71.7 185.1 Q 70.7 184.0, 70.7 182.0 M 72.2 182.0 Q 72.2 183.5, 72.8 184.2 Q 73.4 185.0, 74.6 185.0 Q 75.7 185.0, 76.3 184.2 Q 76.9 183.5, 76.9 182.0 Q 76.9 180.4, 76.3 179.7 Q 75.7 178.9, 74.6 178.9 Q 73.4 178.9, 72.8 179.7 Q 72.2 180.4, 72.2 182.0 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 83.6 177.7 Q 85.3 177.7, 86.3 178.8 Q 87.2 179.8, 87.2 181.8 Q 87.2 183.9, 86.1 185.1 Q 85.0 186.2, 83.0 186.2 Q 82.1 186.2, 81.3 186.0 L 81.3 190.0 L 79.8 190.0 L 79.8 177.9 L 81.0 177.9 L 81.2 178.8 Q 81.6 178.3, 82.3 178.0 Q 82.9 177.7, 83.6 177.7 M 83.0 185.0 Q 84.3 185.0, 85.0 184.2 Q 85.7 183.3, 85.7 181.8 Q 85.7 180.4, 85.1 179.7 Q 84.6 178.9, 83.5 178.9 Q 82.7 178.9, 82.1 179.3 Q 81.6 179.8, 81.3 180.5 L 81.3 184.8 Q 82.1 185.0, 83.0 185.0 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 89.8 177.9 L 90.0 179.0 Q 90.8 177.7, 92.2 177.7 Q 92.7 177.7, 93.3 177.9 L 93.0 179.2 Q 92.4 179.1, 92.0 179.1 Q 91.3 179.1, 90.9 179.3 Q 90.4 179.6, 90.1 180.2 L 90.1 186.1 L 88.6 186.1 L 88.6 177.9 L 89.8 177.9 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 94.1 182.0 Q 94.1 180.0, 95.1 178.8 Q 96.2 177.7, 98.0 177.7 Q 99.9 177.7, 100.9 178.8 Q 101.9 180.0, 101.9 182.0 Q 101.9 184.0, 100.9 185.1 Q 99.9 186.2, 98.0 186.2 Q 96.2 186.2, 95.1 185.1 Q 94.1 184.0, 94.1 182.0 M 95.7 182.0 Q 95.7 183.5, 96.3 184.2 Q 96.9 185.0, 98.0 185.0 Q 99.2 185.0, 99.8 184.2 Q 100.4 183.5, 100.4 182.0 Q 100.4 180.4, 99.8 179.7 Q 99.2 178.9, 98.0 178.9 Q 96.9 178.9, 96.3 179.7 Q 95.7 180.4, 95.7 182.0 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 107.1 177.7 Q 108.8 177.7, 109.7 178.8 Q 110.7 179.8, 110.7 181.8 Q 110.7 183.9, 109.6 185.1 Q 108.4 186.2, 106.5 186.2 Q 105.5 186.2, 104.8 186.0 L 104.8 190.0 L 103.3 190.0 L 103.3 177.9 L 104.5 177.9 L 104.7 178.8 Q 105.1 178.3, 105.7 178.0 Q 106.3 177.7, 107.1 177.7 M 106.5 185.0 Q 107.7 185.0, 108.4 184.2 Q 109.2 183.3, 109.2 181.8 Q 109.2 180.4, 108.6 179.7 Q 108.0 178.9, 107.0 178.9 Q 106.2 178.9, 105.6 179.3 Q 105.0 179.8, 104.8 180.5 L 104.8 184.8 Q 105.6 185.0, 106.5 185.0 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 112.0 183.9 Q 112.0 182.5, 113.1 181.8 Q 114.1 181.1, 116.1 181.1 L 117.3 181.1 L 117.3 180.8 Q 117.3 179.8, 116.8 179.3 Q 116.4 178.9, 115.4 178.9 Q 114.8 178.9, 114.2 179.0 Q 113.7 179.1, 112.9 179.5 L 112.5 178.4 Q 114.0 177.7, 115.4 177.7 Q 117.2 177.7, 118.0 178.5 Q 118.8 179.2, 118.8 180.8 L 118.8 186.1 L 117.6 186.1 Q 117.6 186.0, 117.6 185.8 Q 117.5 185.5, 117.4 185.1 Q 116.3 186.3, 114.7 186.3 Q 113.5 186.3, 112.8 185.6 Q 112.0 185.0, 112.0 183.9 M 113.5 183.8 Q 113.5 184.4, 113.9 184.8 Q 114.3 185.1, 115.0 185.1 Q 115.6 185.1, 116.3 184.8 Q 116.9 184.5, 117.3 184.0 L 117.3 182.2 L 116.2 182.2 Q 114.8 182.2, 114.2 182.6 Q 113.5 183.0, 113.5 183.8 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 124.9 177.7 Q 126.2 177.7, 126.9 178.5 Q 127.6 179.2, 127.6 180.6 L 127.6 186.1 L 126.1 186.1 L 126.1 180.8 Q 126.1 179.8, 125.7 179.3 Q 125.3 178.9, 124.5 178.9 Q 123.8 178.9, 123.1 179.2 Q 122.5 179.6, 122.1 180.2 L 122.1 186.1 L 120.6 186.1 L 120.6 177.9 L 121.8 177.9 L 122.0 179.0 Q 123.1 177.7, 124.9 177.7 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 129.4 182.0 Q 129.4 180.0, 130.4 178.8 Q 131.5 177.7, 133.3 177.7 Q 135.2 177.7, 136.2 178.8 Q 137.2 180.0, 137.2 182.0 Q 137.2 184.0, 136.2 185.1 Q 135.2 186.2, 133.3 186.2 Q 131.5 186.2, 130.4 185.1 Q 129.4 184.0, 129.4 182.0 M 131.0 182.0 Q 131.0 183.5, 131.6 184.2 Q 132.2 185.0, 133.3 185.0 Q 134.5 185.0, 135.1 184.2 Q 135.7 183.5, 135.7 182.0 Q 135.7 180.4, 135.1 179.7 Q 134.5 178.9, 133.3 178.9 Q 132.2 178.9, 131.6 179.7 Q 131.0 180.4, 131.0 182.0 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 138.6 173.9 L 140.0 173.9 L 140.0 186.1 L 138.6 186.1 L 138.6 173.9 \" fill=\"#000000\"/>\n",
       "<path class=\"bond-0 atom-0 atom-1\" d=\"M 304.6,104.6 L 318.3,81.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-0 atom-0 atom-1\" d=\"M 318.3,81.0 L 332.0,57.5\" style=\"fill:none;fill-rule:evenodd;stroke:#00CC00;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-1 atom-0 atom-2\" d=\"M 304.6,104.6 L 288.1,75.7\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-1 atom-0 atom-2\" d=\"M 288.1,75.7 L 271.5,46.8\" style=\"fill:none;fill-rule:evenodd;stroke:#00CC00;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-2 atom-0 atom-3\" d=\"M 304.6,104.6 L 330.5,119.6\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-2 atom-0 atom-3\" d=\"M 330.5,119.6 L 356.3,134.6\" style=\"fill:none;fill-rule:evenodd;stroke:#00CC00;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-3 atom-0 atom-4\" d=\"M 304.6,104.6 L 274.2,122.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-3 atom-0 atom-4\" d=\"M 274.2,122.0 L 243.7,139.5\" style=\"fill:none;fill-rule:evenodd;stroke:#00CC00;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"atom-1\" d=\"M 331.5 40.5 Q 331.5 33.4, 334.8 29.8 Q 338.1 26.0, 344.4 26.0 Q 350.2 26.0, 353.4 30.2 L 350.7 32.3 Q 348.4 29.3, 344.4 29.3 Q 340.1 29.3, 337.8 32.2 Q 335.6 35.0, 335.6 40.5 Q 335.6 46.1, 337.9 49.0 Q 340.3 51.8, 344.8 51.8 Q 348.0 51.8, 351.6 50.0 L 352.7 53.0 Q 351.2 53.9, 349.0 54.5 Q 346.8 55.0, 344.3 55.0 Q 338.1 55.0, 334.8 51.3 Q 331.5 47.5, 331.5 40.5 \" fill=\"#00CC00\"/>\n",
       "<path class=\"atom-1\" d=\"M 356.2 24.3 L 359.9 24.3 L 359.9 54.7 L 356.2 54.7 L 356.2 24.3 \" fill=\"#00CC00\"/>\n",
       "<path class=\"atom-2\" d=\"M 240.7 40.3 Q 240.7 33.2, 243.9 29.6 Q 247.3 25.8, 253.5 25.8 Q 259.4 25.8, 262.5 30.0 L 259.9 32.1 Q 257.6 29.1, 253.5 29.1 Q 249.3 29.1, 247.0 32.0 Q 244.7 34.8, 244.7 40.3 Q 244.7 45.9, 247.1 48.8 Q 249.4 51.6, 254.0 51.6 Q 257.1 51.6, 260.7 49.8 L 261.9 52.8 Q 260.4 53.7, 258.1 54.3 Q 255.9 54.8, 253.4 54.8 Q 247.3 54.8, 243.9 51.1 Q 240.7 47.3, 240.7 40.3 \" fill=\"#00CC00\"/>\n",
       "<path class=\"atom-2\" d=\"M 265.4 24.1 L 269.0 24.1 L 269.0 54.5 L 265.4 54.5 L 265.4 24.1 \" fill=\"#00CC00\"/>\n",
       "<path class=\"atom-3\" d=\"M 358.8 143.3 Q 358.8 136.3, 362.1 132.6 Q 365.4 128.9, 371.7 128.9 Q 377.5 128.9, 380.6 133.0 L 378.0 135.2 Q 375.7 132.2, 371.7 132.2 Q 367.4 132.2, 365.1 135.0 Q 362.9 137.9, 362.9 143.3 Q 362.9 148.9, 365.2 151.8 Q 367.5 154.7, 372.1 154.7 Q 375.2 154.7, 378.9 152.8 L 380.0 155.8 Q 378.5 156.8, 376.3 157.3 Q 374.0 157.9, 371.5 157.9 Q 365.4 157.9, 362.1 154.1 Q 358.8 150.4, 358.8 143.3 \" fill=\"#00CC00\"/>\n",
       "<path class=\"atom-3\" d=\"M 383.5 127.2 L 387.2 127.2 L 387.2 157.5 L 383.5 157.5 L 383.5 127.2 \" fill=\"#00CC00\"/>\n",
       "<path class=\"atom-4\" d=\"M 212.8 143.0 Q 212.8 135.9, 216.1 132.2 Q 219.4 128.5, 225.7 128.5 Q 231.5 128.5, 234.7 132.6 L 232.0 134.8 Q 229.7 131.8, 225.7 131.8 Q 221.4 131.8, 219.1 134.7 Q 216.9 137.5, 216.9 143.0 Q 216.9 148.6, 219.2 151.4 Q 221.6 154.3, 226.1 154.3 Q 229.3 154.3, 232.9 152.4 L 234.0 155.4 Q 232.5 156.4, 230.3 157.0 Q 228.1 157.5, 225.6 157.5 Q 219.4 157.5, 216.1 153.8 Q 212.8 150.0, 212.8 143.0 \" fill=\"#00CC00\"/>\n",
       "<path class=\"atom-4\" d=\"M 237.5 126.8 L 241.2 126.8 L 241.2 157.2 L 237.5 157.2 L 237.5 126.8 \" fill=\"#00CC00\"/>\n",
       "<path class=\"legend\" d=\"M 227.6 185.7 Q 227.6 183.7, 228.6 182.6 Q 229.6 181.4, 231.6 181.4 Q 233.4 181.4, 234.4 182.8 L 233.4 183.6 Q 233.0 183.1, 232.6 182.9 Q 232.1 182.6, 231.6 182.6 Q 230.4 182.6, 229.8 183.4 Q 229.2 184.2, 229.2 185.7 Q 229.2 187.2, 229.8 188.0 Q 230.5 188.8, 231.7 188.8 Q 232.3 188.8, 232.8 188.6 Q 233.3 188.4, 233.8 188.2 L 234.3 189.2 Q 233.1 189.9, 231.6 189.9 Q 229.6 189.9, 228.6 188.8 Q 227.6 187.7, 227.6 185.7 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 235.4 187.6 Q 235.4 186.3, 236.4 185.6 Q 237.5 184.8, 239.4 184.8 L 240.6 184.8 L 240.6 184.5 Q 240.6 183.5, 240.2 183.1 Q 239.8 182.6, 238.8 182.6 Q 238.1 182.6, 237.6 182.8 Q 237.1 182.9, 236.3 183.2 L 235.8 182.2 Q 237.3 181.4, 238.8 181.4 Q 240.5 181.4, 241.3 182.2 Q 242.1 182.9, 242.1 184.5 L 242.1 189.8 L 241.0 189.8 Q 241.0 189.7, 240.9 189.5 Q 240.9 189.2, 240.8 188.8 Q 239.6 190.0, 238.1 190.0 Q 236.8 190.0, 236.1 189.3 Q 235.4 188.7, 235.4 187.6 M 236.9 187.6 Q 236.9 188.2, 237.3 188.5 Q 237.6 188.8, 238.4 188.8 Q 239.0 188.8, 239.6 188.5 Q 240.2 188.2, 240.6 187.7 L 240.6 186.0 L 239.5 186.0 Q 238.2 186.0, 237.5 186.4 Q 236.9 186.8, 236.9 187.6 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 245.2 181.6 L 245.3 182.7 Q 246.2 181.4, 247.6 181.4 Q 248.1 181.4, 248.7 181.6 L 248.4 182.9 Q 247.7 182.8, 247.4 182.8 Q 246.7 182.8, 246.2 183.1 Q 245.8 183.3, 245.4 183.9 L 245.4 189.8 L 243.9 189.8 L 243.9 181.6 L 245.2 181.6 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 253.3 181.4 Q 255.0 181.4, 256.0 182.5 Q 256.9 183.6, 256.9 185.6 Q 256.9 187.6, 255.8 188.8 Q 254.7 189.9, 252.7 189.9 Q 251.4 189.9, 250.2 189.5 L 249.5 189.3 L 249.5 177.7 L 251.0 177.7 L 251.0 182.5 Q 251.8 181.4, 253.3 181.4 M 252.7 188.8 Q 254.0 188.8, 254.7 187.9 Q 255.4 187.1, 255.4 185.6 Q 255.4 184.1, 254.8 183.4 Q 254.3 182.6, 253.2 182.6 Q 252.4 182.6, 251.8 183.1 Q 251.2 183.5, 251.0 184.3 L 251.0 188.5 Q 251.8 188.8, 252.7 188.8 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 258.2 185.7 Q 258.2 183.7, 259.2 182.6 Q 260.3 181.4, 262.1 181.4 Q 264.0 181.4, 265.0 182.6 Q 266.0 183.7, 266.0 185.7 Q 266.0 187.7, 265.0 188.8 Q 264.0 189.9, 262.1 189.9 Q 260.3 189.9, 259.2 188.8 Q 258.2 187.7, 258.2 185.7 M 259.8 185.7 Q 259.8 187.2, 260.4 188.0 Q 261.0 188.8, 262.1 188.8 Q 263.3 188.8, 263.9 188.0 Q 264.5 187.2, 264.5 185.7 Q 264.5 184.2, 263.9 183.4 Q 263.3 182.6, 262.1 182.6 Q 261.0 182.6, 260.4 183.4 Q 259.8 184.2, 259.8 185.7 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 271.6 181.4 Q 273.0 181.4, 273.6 182.2 Q 274.3 182.9, 274.3 184.4 L 274.3 189.8 L 272.8 189.8 L 272.8 184.5 Q 272.8 183.5, 272.5 183.1 Q 272.1 182.6, 271.3 182.6 Q 270.5 182.6, 269.9 183.0 Q 269.3 183.3, 268.9 183.9 L 268.9 189.8 L 267.4 189.8 L 267.4 181.6 L 268.6 181.6 L 268.8 182.7 Q 269.9 181.4, 271.6 181.4 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"\" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 282.1 182.7 L 282.1 181.6 L 283.6 181.6 L 283.9 179.2 L 285.0 179.2 L 285.0 181.6 L 287.5 181.6 L 287.5 182.7 L 285.0 182.7 L 285.0 187.3 Q 285.0 188.7, 286.2 188.7 Q 286.7 188.7, 287.4 188.5 L 287.6 189.5 Q 286.8 189.9, 285.9 189.9 Q 284.9 189.9, 284.2 189.3 Q 283.5 188.6, 283.5 187.4 L 283.5 182.7 L 282.1 182.7 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 288.6 185.7 Q 288.6 183.7, 289.6 182.6 Q 290.6 181.4, 292.5 181.4 Q 294.3 181.4, 295.1 182.5 Q 295.9 183.6, 295.9 185.6 L 295.9 185.9 L 290.2 185.9 Q 290.2 187.3, 290.8 188.0 Q 291.4 188.8, 292.6 188.8 Q 293.2 188.8, 293.8 188.6 Q 294.4 188.4, 295.1 188.1 L 295.6 189.2 Q 294.8 189.6, 294.0 189.8 Q 293.3 189.9, 292.5 189.9 Q 290.7 189.9, 289.6 188.8 Q 288.6 187.7, 288.6 185.7 M 292.5 182.6 Q 291.5 182.6, 291.0 183.2 Q 290.4 183.7, 290.2 184.8 L 294.3 184.8 Q 294.2 183.7, 293.8 183.2 Q 293.3 182.6, 292.5 182.6 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 297.1 182.7 L 297.1 181.6 L 298.6 181.6 L 298.9 179.2 L 300.0 179.2 L 300.0 181.6 L 302.5 181.6 L 302.5 182.7 L 300.0 182.7 L 300.0 187.3 Q 300.0 188.7, 301.2 188.7 Q 301.7 188.7, 302.4 188.5 L 302.7 189.5 Q 301.8 189.9, 300.9 189.9 Q 299.9 189.9, 299.2 189.3 Q 298.5 188.6, 298.5 187.4 L 298.5 182.7 L 297.1 182.7 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 304.8 181.6 L 305.0 182.7 Q 305.9 181.4, 307.3 181.4 Q 307.7 181.4, 308.4 181.6 L 308.1 182.9 Q 307.4 182.8, 307.0 182.8 Q 306.4 182.8, 305.9 183.1 Q 305.5 183.3, 305.1 183.9 L 305.1 189.8 L 303.6 189.8 L 303.6 181.6 L 304.8 181.6 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 309.2 187.6 Q 309.2 186.3, 310.2 185.6 Q 311.3 184.8, 313.2 184.8 L 314.4 184.8 L 314.4 184.5 Q 314.4 183.5, 314.0 183.1 Q 313.6 182.6, 312.6 182.6 Q 311.9 182.6, 311.4 182.8 Q 310.9 182.9, 310.1 183.2 L 309.6 182.2 Q 311.1 181.4, 312.6 181.4 Q 314.3 181.4, 315.1 182.2 Q 315.9 182.9, 315.9 184.5 L 315.9 189.8 L 314.8 189.8 Q 314.7 189.7, 314.7 189.5 Q 314.7 189.2, 314.6 188.8 Q 313.4 190.0, 311.9 190.0 Q 310.6 190.0, 309.9 189.3 Q 309.2 188.7, 309.2 187.6 M 310.7 187.6 Q 310.7 188.2, 311.1 188.5 Q 311.4 188.8, 312.2 188.8 Q 312.8 188.8, 313.4 188.5 Q 314.0 188.2, 314.4 187.7 L 314.4 186.0 L 313.3 186.0 Q 312.0 186.0, 311.3 186.4 Q 310.7 186.8, 310.7 187.6 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 317.7 185.7 Q 317.7 183.7, 318.7 182.6 Q 319.7 181.4, 321.7 181.4 Q 323.5 181.4, 324.5 182.8 L 323.5 183.6 Q 323.1 183.1, 322.7 182.9 Q 322.2 182.6, 321.7 182.6 Q 320.5 182.6, 319.9 183.4 Q 319.3 184.2, 319.3 185.7 Q 319.3 187.2, 319.9 188.0 Q 320.6 188.8, 321.8 188.8 Q 322.4 188.8, 322.9 188.6 Q 323.4 188.4, 323.9 188.2 L 324.4 189.2 Q 323.2 189.9, 321.7 189.9 Q 319.7 189.9, 318.7 188.8 Q 317.7 187.7, 317.7 185.7 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 329.8 181.4 Q 331.1 181.4, 331.8 182.2 Q 332.5 182.9, 332.5 184.4 L 332.5 189.8 L 331.0 189.8 L 331.0 184.5 Q 331.0 183.5, 330.6 183.1 Q 330.2 182.6, 329.4 182.6 Q 328.6 182.6, 328.0 183.0 Q 327.4 183.3, 327.0 183.9 L 327.0 189.8 L 325.5 189.8 L 325.5 177.7 L 327.0 177.7 L 327.0 182.6 Q 328.1 181.4, 329.8 181.4 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 334.3 177.7 L 335.7 177.7 L 335.7 189.8 L 334.3 189.8 L 334.3 177.7 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 337.7 185.7 Q 337.7 183.7, 338.7 182.6 Q 339.7 181.4, 341.6 181.4 Q 343.5 181.4, 344.5 182.6 Q 345.5 183.7, 345.5 185.7 Q 345.5 187.7, 344.5 188.8 Q 343.5 189.9, 341.6 189.9 Q 339.7 189.9, 338.7 188.8 Q 337.7 187.7, 337.7 185.7 M 339.2 185.7 Q 339.2 187.2, 339.8 188.0 Q 340.5 188.8, 341.6 188.8 Q 342.7 188.8, 343.3 188.0 Q 344.0 187.2, 344.0 185.7 Q 344.0 184.2, 343.3 183.4 Q 342.7 182.6, 341.6 182.6 Q 340.5 182.6, 339.8 183.4 Q 339.2 184.2, 339.2 185.7 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 348.0 181.6 L 348.2 182.7 Q 349.1 181.4, 350.5 181.4 Q 350.9 181.4, 351.5 181.6 L 351.3 182.9 Q 350.6 182.8, 350.2 182.8 Q 349.5 182.8, 349.1 183.1 Q 348.7 183.3, 348.3 183.9 L 348.3 189.8 L 346.8 189.8 L 346.8 181.6 L 348.0 181.6 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 352.3 178.5 L 353.8 178.5 L 353.8 179.9 L 352.3 179.9 L 352.3 178.5 M 352.3 181.6 L 353.8 181.6 L 353.8 189.8 L 352.3 189.8 L 352.3 181.6 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 363.2 177.7 L 363.2 189.8 L 362.0 189.8 L 361.8 188.8 Q 360.9 189.9, 359.4 189.9 Q 357.7 189.9, 356.7 188.9 Q 355.8 187.8, 355.8 185.8 Q 355.8 183.8, 356.9 182.6 Q 358.0 181.4, 360.0 181.4 Q 360.8 181.4, 361.7 181.7 L 361.7 177.7 L 363.2 177.7 M 359.5 188.8 Q 360.3 188.8, 360.9 188.3 Q 361.5 187.8, 361.7 187.0 L 361.7 182.9 Q 360.9 182.6, 360.0 182.6 Q 358.7 182.6, 358.0 183.5 Q 357.3 184.3, 357.3 185.8 Q 357.3 187.2, 357.9 188.0 Q 358.4 188.8, 359.5 188.8 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 365.1 185.7 Q 365.1 183.7, 366.1 182.6 Q 367.1 181.4, 368.9 181.4 Q 370.8 181.4, 371.6 182.5 Q 372.4 183.6, 372.4 185.6 L 372.4 185.9 L 366.6 185.9 Q 366.7 187.3, 367.3 188.0 Q 367.9 188.8, 369.1 188.8 Q 369.7 188.8, 370.3 188.6 Q 370.9 188.4, 371.6 188.1 L 372.0 189.2 Q 371.2 189.6, 370.5 189.8 Q 369.8 189.9, 369.0 189.9 Q 367.1 189.9, 366.1 188.8 Q 365.1 187.7, 365.1 185.7 M 368.9 182.6 Q 368.0 182.6, 367.4 183.2 Q 366.9 183.7, 366.7 184.8 L 370.8 184.8 Q 370.7 183.7, 370.2 183.2 Q 369.8 182.6, 368.9 182.6 \" fill=\"#000000\"/>\n",
       "<path class=\"bond-0 atom-0 atom-1\" d=\"M 415.1,146.9 L 480.4,109.5\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-1 atom-1 atom-2\" d=\"M 486.0,112.8 L 486.1,82.1\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-1 atom-1 atom-2\" d=\"M 486.1,82.1 L 486.2,51.5\" style=\"fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-1 atom-1 atom-2\" d=\"M 474.7,112.7 L 474.8,82.1\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-1 atom-1 atom-2\" d=\"M 474.8,82.1 L 474.9,51.5\" style=\"fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-2 atom-1 atom-3\" d=\"M 480.4,109.5 L 505.1,123.9\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-2 atom-1 atom-3\" d=\"M 505.1,123.9 L 529.9,138.3\" style=\"fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path d=\"M 477.1,111.3 L 480.4,109.5 L 481.6,110.2\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path class=\"atom-2\" d=\"M 467.6 34.3 Q 467.6 27.5, 471.0 23.7 Q 474.3 19.9, 480.6 19.9 Q 486.9 19.9, 490.3 23.7 Q 493.6 27.5, 493.6 34.3 Q 493.6 41.2, 490.2 45.1 Q 486.8 49.0, 480.6 49.0 Q 474.4 49.0, 471.0 45.1 Q 467.6 41.2, 467.6 34.3 M 480.6 45.8 Q 484.9 45.8, 487.3 42.9 Q 489.6 40.0, 489.6 34.3 Q 489.6 28.8, 487.3 26.0 Q 484.9 23.1, 480.6 23.1 Q 476.3 23.1, 473.9 25.9 Q 471.6 28.7, 471.6 34.3 Q 471.6 40.0, 473.9 42.9 Q 476.3 45.8, 480.6 45.8 \" fill=\"#FF0000\"/>\n",
       "<path class=\"atom-3\" d=\"M 532.4 147.4 Q 532.4 140.6, 535.7 136.8 Q 539.1 133.0, 545.4 133.0 Q 551.7 133.0, 555.0 136.8 Q 558.4 140.6, 558.4 147.4 Q 558.4 154.3, 555.0 158.2 Q 551.6 162.1, 545.4 162.1 Q 539.1 162.1, 535.7 158.2 Q 532.4 154.3, 532.4 147.4 M 545.4 158.9 Q 549.7 158.9, 552.0 156.0 Q 554.4 153.1, 554.4 147.4 Q 554.4 141.8, 552.0 139.0 Q 549.7 136.2, 545.4 136.2 Q 541.1 136.2, 538.7 139.0 Q 536.4 141.8, 536.4 147.4 Q 536.4 153.1, 538.7 156.0 Q 541.1 158.9, 545.4 158.9 \" fill=\"#FF0000\"/>\n",
       "<path class=\"atom-3\" d=\"M 562.8 133.3 L 566.6 133.3 L 566.6 145.4 L 581.1 145.4 L 581.1 133.3 L 584.9 133.3 L 584.9 161.6 L 581.1 161.6 L 581.1 148.6 L 566.6 148.6 L 566.6 161.6 L 562.8 161.6 L 562.8 133.3 \" fill=\"#FF0000\"/>\n",
       "<path class=\"legend\" d=\"M 462.5 187.6 Q 462.5 186.3, 463.5 185.6 Q 464.6 184.8, 466.5 184.8 L 467.7 184.8 L 467.7 184.5 Q 467.7 183.5, 467.3 183.1 Q 466.9 182.6, 465.9 182.6 Q 465.2 182.6, 464.7 182.8 Q 464.2 182.9, 463.4 183.2 L 462.9 182.2 Q 464.4 181.4, 465.9 181.4 Q 467.6 181.4, 468.4 182.2 Q 469.2 182.9, 469.2 184.5 L 469.2 189.8 L 468.1 189.8 Q 468.0 189.7, 468.0 189.5 Q 468.0 189.2, 467.9 188.8 Q 466.7 190.0, 465.2 190.0 Q 463.9 190.0, 463.2 189.3 Q 462.5 188.7, 462.5 187.6 M 464.0 187.6 Q 464.0 188.2, 464.4 188.5 Q 464.7 188.8, 465.5 188.8 Q 466.1 188.8, 466.7 188.5 Q 467.3 188.2, 467.7 187.7 L 467.7 186.0 L 466.6 186.0 Q 465.3 186.0, 464.6 186.4 Q 464.0 186.8, 464.0 187.6 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 471.0 185.7 Q 471.0 183.7, 472.0 182.6 Q 473.0 181.4, 474.9 181.4 Q 476.8 181.4, 477.8 182.8 L 476.8 183.6 Q 476.4 183.1, 475.9 182.9 Q 475.5 182.6, 474.9 182.6 Q 473.8 182.6, 473.1 183.4 Q 472.5 184.2, 472.5 185.7 Q 472.5 187.2, 473.2 188.0 Q 473.8 188.8, 475.0 188.8 Q 475.7 188.8, 476.2 188.6 Q 476.6 188.4, 477.2 188.2 L 477.6 189.2 Q 476.4 189.9, 474.9 189.9 Q 473.0 189.9, 472.0 188.8 Q 471.0 187.7, 471.0 185.7 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 478.7 185.7 Q 478.7 183.7, 479.7 182.6 Q 480.7 181.4, 482.5 181.4 Q 484.3 181.4, 485.1 182.5 Q 486.0 183.6, 486.0 185.6 L 486.0 185.9 L 480.2 185.9 Q 480.2 187.3, 480.9 188.0 Q 481.5 188.8, 482.7 188.8 Q 483.3 188.8, 483.9 188.6 Q 484.5 188.4, 485.2 188.1 L 485.6 189.2 Q 484.8 189.6, 484.1 189.8 Q 483.3 189.9, 482.6 189.9 Q 480.7 189.9, 479.7 188.8 Q 478.7 187.7, 478.7 185.7 M 482.5 182.6 Q 481.6 182.6, 481.0 183.2 Q 480.4 183.7, 480.3 184.8 L 484.4 184.8 Q 484.3 183.7, 483.8 183.2 Q 483.4 182.6, 482.5 182.6 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 487.1 182.7 L 487.1 181.6 L 488.6 181.6 L 488.9 179.2 L 490.0 179.2 L 490.0 181.6 L 492.5 181.6 L 492.5 182.7 L 490.0 182.7 L 490.0 187.3 Q 490.0 188.7, 491.2 188.7 Q 491.7 188.7, 492.4 188.5 L 492.7 189.5 Q 491.8 189.9, 490.9 189.9 Q 489.9 189.9, 489.2 189.3 Q 488.5 188.6, 488.5 187.4 L 488.5 182.7 L 487.1 182.7 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 493.6 178.5 L 495.1 178.5 L 495.1 179.9 L 493.6 179.9 L 493.6 178.5 M 493.6 181.6 L 495.1 181.6 L 495.1 189.8 L 493.6 189.8 L 493.6 181.6 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 496.9 185.7 Q 496.9 183.7, 497.9 182.6 Q 498.9 181.4, 500.9 181.4 Q 502.8 181.4, 503.7 182.8 L 502.7 183.6 Q 502.3 183.1, 501.9 182.9 Q 501.5 182.6, 500.9 182.6 Q 499.7 182.6, 499.1 183.4 Q 498.5 184.2, 498.5 185.7 Q 498.5 187.2, 499.1 188.0 Q 499.8 188.8, 501.0 188.8 Q 501.7 188.8, 502.1 188.6 Q 502.6 188.4, 503.2 188.2 L 503.6 189.2 Q 502.4 189.9, 500.9 189.9 Q 498.9 189.9, 497.9 188.8 Q 496.9 187.7, 496.9 185.7 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"\" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 510.5 187.6 Q 510.5 186.3, 511.5 185.6 Q 512.6 184.8, 514.5 184.8 L 515.8 184.8 L 515.8 184.5 Q 515.8 183.5, 515.3 183.1 Q 514.9 182.6, 513.9 182.6 Q 513.2 182.6, 512.7 182.8 Q 512.2 182.9, 511.4 183.2 L 511.0 182.2 Q 512.5 181.4, 513.9 181.4 Q 515.7 181.4, 516.5 182.2 Q 517.3 182.9, 517.3 184.5 L 517.3 189.8 L 516.1 189.8 Q 516.1 189.7, 516.0 189.5 Q 516.0 189.2, 515.9 188.8 Q 514.7 190.0, 513.2 190.0 Q 512.0 190.0, 511.2 189.3 Q 510.5 188.7, 510.5 187.6 M 512.0 187.6 Q 512.0 188.2, 512.4 188.5 Q 512.8 188.8, 513.5 188.8 Q 514.1 188.8, 514.7 188.5 Q 515.3 188.2, 515.8 187.7 L 515.8 186.0 L 514.6 186.0 Q 513.3 186.0, 512.7 186.4 Q 512.0 186.8, 512.0 187.6 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 519.0 185.7 Q 519.0 183.7, 520.0 182.6 Q 521.0 181.4, 522.9 181.4 Q 524.8 181.4, 525.8 182.8 L 524.8 183.6 Q 524.4 183.1, 524.0 182.9 Q 523.5 182.6, 522.9 182.6 Q 521.8 182.6, 521.2 183.4 Q 520.5 184.2, 520.5 185.7 Q 520.5 187.2, 521.2 188.0 Q 521.8 188.8, 523.0 188.8 Q 523.7 188.8, 524.2 188.6 Q 524.6 188.4, 525.2 188.2 L 525.6 189.2 Q 524.4 189.9, 522.9 189.9 Q 521.0 189.9, 520.0 188.8 Q 519.0 187.7, 519.0 185.7 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 526.7 178.5 L 528.2 178.5 L 528.2 179.9 L 526.7 179.9 L 526.7 178.5 M 526.7 181.6 L 528.2 181.6 L 528.2 189.8 L 526.7 189.8 L 526.7 181.6 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 537.5 177.7 L 537.5 189.8 L 536.3 189.8 L 536.1 188.8 Q 535.2 189.9, 533.7 189.9 Q 532.0 189.9, 531.0 188.9 Q 530.1 187.8, 530.1 185.8 Q 530.1 183.8, 531.2 182.6 Q 532.3 181.4, 534.3 181.4 Q 535.1 181.4, 536.0 181.7 L 536.0 177.7 L 537.5 177.7 M 533.8 188.8 Q 534.6 188.8, 535.2 188.3 Q 535.8 187.8, 536.0 187.0 L 536.0 182.9 Q 535.2 182.6, 534.3 182.6 Q 533.0 182.6, 532.3 183.5 Q 531.6 184.3, 531.6 185.8 Q 531.6 187.2, 532.2 188.0 Q 532.7 188.8, 533.8 188.8 \" fill=\"#000000\"/>\n",
       "</svg>"
      ],
      "text/plain": [
       "<IPython.core.display.SVG object>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "display_structures(smiles_list)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "12884cef",
   "metadata": {},
   "source": [
    "### Exercise\n",
    "\n",
    "Write the SMILES and display a table of chemical structures for the following. If you don't know the structures, google the names. \n",
    "\n",
    "1. 2-menthylpentene\n",
    "2. isopropanal\n",
    "3. 2-pentyn-1-ol\n",
    "4. 1,2,2,3-tetrafluorobutane\n",
    "5. propanoic acid\n",
    "6. 2-t-butyl-3-hydroxy-propane"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "e344b43f",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.831576Z",
     "start_time": "2025-05-05T16:57:14.830307Z"
    }
   },
   "outputs": [],
   "source": [
    "#Write your code here"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b4d62fbb",
   "metadata": {},
   "source": [
    "### Rings\n",
    "In SMILES, rings are indicated by specifying a \"closure digit\" indicating atoms that are connected.  For instance, the SMILES for cyclohexane is C1CCCCC1. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "1a6c7f2c",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.840540Z",
     "start_time": "2025-05-05T16:57:14.835452Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "image/svg+xml": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 33.0,217.4 L 33.1,82.4' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 33.1,82.4 L 150.1,15.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-2 atom-3' d='M 150.1,15.0 L 267.0,82.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-3 atom-3 atom-4' d='M 267.0,82.6 L 266.9,217.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-4 atom-4 atom-5' d='M 266.9,217.6 L 149.9,285.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-5 atom-5 atom-0' d='M 149.9,285.0 L 33.0,217.4' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 33.0,210.7 L 33.0,217.4 L 38.9,220.8' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 33.1,89.2 L 33.1,82.4 L 39.0,79.0' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 144.3,18.4 L 150.1,15.0 L 156.0,18.4' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 261.1,79.2 L 267.0,82.6 L 267.0,89.3' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 266.9,210.8 L 266.9,217.6 L 261.0,221.0' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 155.7,281.6 L 149.9,285.0 L 144.0,281.6' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "</svg>\n"
      ],
      "text/html": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 33.0,217.4 L 33.1,82.4' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 33.1,82.4 L 150.1,15.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-2 atom-3' d='M 150.1,15.0 L 267.0,82.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-3 atom-3 atom-4' d='M 267.0,82.6 L 266.9,217.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-4 atom-4 atom-5' d='M 266.9,217.6 L 149.9,285.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-5 atom-5 atom-0' d='M 149.9,285.0 L 33.0,217.4' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 33.0,210.7 L 33.0,217.4 L 38.9,220.8' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 33.1,89.2 L 33.1,82.4 L 39.0,79.0' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 144.3,18.4 L 150.1,15.0 L 156.0,18.4' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 261.1,79.2 L 267.0,82.6 L 267.0,89.3' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 266.9,210.8 L 266.9,217.6 L 261.0,221.0' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 155.7,281.6 L 149.9,285.0 L 144.0,281.6' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<rdkit.Chem.rdchem.Mol at 0x34afacba0>"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Chem.MolFromSmiles(\"C1CCCCC1\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c63609a6",
   "metadata": {},
   "source": [
    "Double bonds and heteroatoms can be put into rings in the same way they were in acyclic structures. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "53ae4880",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.850778Z",
     "start_time": "2025-05-05T16:57:14.845692Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "image/svg+xml": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 139.7,23.9 L 22.0,131.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 143.0,53.2 L 50.9,137.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 22.0,131.0 L 87.5,276.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-2 atom-3' d='M 87.5,276.1 L 157.5,268.4' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-2 atom-3' d='M 157.5,268.4 L 227.5,260.7' style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-3 atom-3 atom-4' d='M 249.8,239.1 L 263.9,170.9' style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-3 atom-3 atom-4' d='M 263.9,170.9 L 278.0,102.8' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-4 atom-4 atom-0' d='M 278.0,102.8 L 139.7,23.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 133.8,29.2 L 139.7,23.9 L 146.6,27.8' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 27.9,125.7 L 22.0,131.0 L 25.3,138.3' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 84.2,268.9 L 87.5,276.1 L 91.0,275.7' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 277.3,106.2 L 278.0,102.8 L 271.1,98.8' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path class='atom-3' d='M 232.8 258.7\n",
       "Q 232.8 251.9, 236.1 248.1\n",
       "Q 239.5 244.3, 245.8 244.3\n",
       "Q 252.0 244.3, 255.4 248.1\n",
       "Q 258.8 251.9, 258.8 258.7\n",
       "Q 258.8 265.6, 255.4 269.5\n",
       "Q 252.0 273.4, 245.8 273.4\n",
       "Q 239.5 273.4, 236.1 269.5\n",
       "Q 232.8 265.6, 232.8 258.7\n",
       "M 245.8 270.2\n",
       "Q 250.1 270.2, 252.4 267.3\n",
       "Q 254.8 264.4, 254.8 258.7\n",
       "Q 254.8 253.2, 252.4 250.4\n",
       "Q 250.1 247.5, 245.8 247.5\n",
       "Q 241.4 247.5, 239.1 250.3\n",
       "Q 236.8 253.1, 236.8 258.7\n",
       "Q 236.8 264.4, 239.1 267.3\n",
       "Q 241.4 270.2, 245.8 270.2\n",
       "' fill='#FF0000'/>\n",
       "</svg>\n"
      ],
      "text/html": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 139.7,23.9 L 22.0,131.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 143.0,53.2 L 50.9,137.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 22.0,131.0 L 87.5,276.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-2 atom-3' d='M 87.5,276.1 L 157.5,268.4' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-2 atom-3' d='M 157.5,268.4 L 227.5,260.7' style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-3 atom-3 atom-4' d='M 249.8,239.1 L 263.9,170.9' style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-3 atom-3 atom-4' d='M 263.9,170.9 L 278.0,102.8' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-4 atom-4 atom-0' d='M 278.0,102.8 L 139.7,23.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 133.8,29.2 L 139.7,23.9 L 146.6,27.8' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 27.9,125.7 L 22.0,131.0 L 25.3,138.3' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 84.2,268.9 L 87.5,276.1 L 91.0,275.7' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 277.3,106.2 L 278.0,102.8 L 271.1,98.8' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path class='atom-3' d='M 232.8 258.7\n",
       "Q 232.8 251.9, 236.1 248.1\n",
       "Q 239.5 244.3, 245.8 244.3\n",
       "Q 252.0 244.3, 255.4 248.1\n",
       "Q 258.8 251.9, 258.8 258.7\n",
       "Q 258.8 265.6, 255.4 269.5\n",
       "Q 252.0 273.4, 245.8 273.4\n",
       "Q 239.5 273.4, 236.1 269.5\n",
       "Q 232.8 265.6, 232.8 258.7\n",
       "M 245.8 270.2\n",
       "Q 250.1 270.2, 252.4 267.3\n",
       "Q 254.8 264.4, 254.8 258.7\n",
       "Q 254.8 253.2, 252.4 250.4\n",
       "Q 250.1 247.5, 245.8 247.5\n",
       "Q 241.4 247.5, 239.1 250.3\n",
       "Q 236.8 253.1, 236.8 258.7\n",
       "Q 236.8 264.4, 239.1 267.3\n",
       "Q 241.4 270.2, 245.8 270.2\n",
       "' fill='#FF0000'/>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<rdkit.Chem.rdchem.Mol at 0x34afaccf0>"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mol = Chem.MolFromSmiles(\"C1=CCOC1\")\n",
    "mol"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "02a509c4",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.858987Z",
     "start_time": "2025-05-05T16:57:14.857513Z"
    }
   },
   "outputs": [],
   "source": [
    "# define a text buffer for our examples\n",
    "examples = \"\"\"C1CC1 cyclohexane\n",
    "C1CCC1 cyclobutane\n",
    "C1CCC=C1 cyclopentene\"\"\"\n",
    "# note that we use the second argumen to split to only return two tokens\n",
    "ring_smiles_list = [x.split(\" \",1) for x in examples.split(\"\\n\")]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "91f3ff76",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.867049Z",
     "start_time": "2025-05-05T16:57:14.863058Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:rdkit=\"http://www.rdkit.org/xml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" baseProfile=\"full\" xml:space=\"preserve\" width=\"800px\" height=\"200px\" viewBox=\"0 0 800 200\">\n",
       "<!-- END OF HEADER -->\n",
       "<rect style=\"opacity:1.0;fill:#FFFFFF;stroke:none\" width=\"200.0\" height=\"200.0\" x=\"0.0\" y=\"0.0\"> </rect>\n",
       "<path class=\"bond-0 atom-0 atom-1\" d=\"M 55.6,91.3 L 144.4,142.1\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-1 atom-1 atom-2\" d=\"M 144.4,142.1 L 144.0,39.9\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-2 atom-2 atom-0\" d=\"M 144.0,39.9 L 55.6,91.3\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path d=\"M 60.1,93.9 L 55.6,91.3 L 60.1,88.7\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 139.9,139.6 L 144.4,142.1 L 144.3,137.0\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 144.0,45.0 L 144.0,39.9 L 139.6,42.5\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path class=\"legend\" d=\"M 56.0 181.9 Q 56.0 180.0, 57.0 178.8 Q 58.0 177.7, 60.0 177.7 Q 61.9 177.7, 62.8 179.1 L 61.8 179.8 Q 61.4 179.3, 61.0 179.1 Q 60.6 178.9, 60.0 178.9 Q 58.8 178.9, 58.2 179.7 Q 57.6 180.4, 57.6 181.9 Q 57.6 183.5, 58.2 184.2 Q 58.9 185.0, 60.1 185.0 Q 60.8 185.0, 61.2 184.9 Q 61.7 184.7, 62.3 184.4 L 62.7 185.5 Q 61.5 186.2, 60.0 186.2 Q 58.0 186.2, 57.0 185.0 Q 56.0 183.9, 56.0 181.9 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 70.2 177.8 L 71.7 177.8 L 67.4 190.0 L 66.1 190.0 L 67.4 186.1 L 66.8 186.1 L 63.9 177.8 L 65.4 177.8 L 67.9 184.8 L 70.2 177.8 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 72.5 181.9 Q 72.5 180.0, 73.5 178.8 Q 74.5 177.7, 76.4 177.7 Q 78.3 177.7, 79.3 179.1 L 78.3 179.8 Q 77.9 179.3, 77.5 179.1 Q 77.0 178.9, 76.4 178.9 Q 75.3 178.9, 74.7 179.7 Q 74.0 180.4, 74.0 181.9 Q 74.0 183.5, 74.7 184.2 Q 75.3 185.0, 76.5 185.0 Q 77.2 185.0, 77.7 184.9 Q 78.1 184.7, 78.7 184.4 L 79.1 185.5 Q 77.9 186.2, 76.4 186.2 Q 74.5 186.2, 73.5 185.0 Q 72.5 183.9, 72.5 181.9 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 80.3 173.9 L 81.8 173.9 L 81.8 186.1 L 80.3 186.1 L 80.3 173.9 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 83.9 181.9 Q 83.9 179.9, 84.9 178.8 Q 85.9 177.7, 87.8 177.7 Q 89.6 177.7, 90.6 178.8 Q 91.7 179.9, 91.7 181.9 Q 91.7 183.9, 90.6 185.1 Q 89.6 186.2, 87.8 186.2 Q 85.9 186.2, 84.9 185.1 Q 83.9 183.9, 83.9 181.9 M 85.4 181.9 Q 85.4 183.4, 86.0 184.2 Q 86.6 185.0, 87.8 185.0 Q 88.9 185.0, 89.5 184.2 Q 90.1 183.4, 90.1 181.9 Q 90.1 180.4, 89.5 179.7 Q 88.9 178.9, 87.8 178.9 Q 86.6 178.9, 86.0 179.7 Q 85.4 180.4, 85.4 181.9 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 97.4 177.7 Q 98.7 177.7, 99.4 178.4 Q 100.1 179.2, 100.1 180.6 L 100.1 186.1 L 98.6 186.1 L 98.6 180.7 Q 98.6 179.8, 98.2 179.3 Q 97.8 178.9, 97.0 178.9 Q 96.2 178.9, 95.6 179.2 Q 95.0 179.6, 94.6 180.2 L 94.6 186.1 L 93.1 186.1 L 93.1 173.9 L 94.6 173.9 L 94.6 178.9 Q 95.7 177.7, 97.4 177.7 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 102.0 181.9 Q 102.0 179.9, 103.0 178.8 Q 104.0 177.7, 105.8 177.7 Q 107.6 177.7, 108.4 178.8 Q 109.3 179.9, 109.3 181.9 L 109.3 182.1 L 103.5 182.1 Q 103.5 183.5, 104.2 184.3 Q 104.8 185.0, 106.0 185.0 Q 106.6 185.0, 107.2 184.9 Q 107.8 184.7, 108.5 184.4 L 108.9 185.4 Q 108.1 185.8, 107.4 186.0 Q 106.6 186.2, 105.9 186.2 Q 104.0 186.2, 103.0 185.1 Q 102.0 184.0, 102.0 181.9 M 105.8 178.9 Q 104.9 178.9, 104.3 179.4 Q 103.8 180.0, 103.6 181.0 L 107.7 181.0 Q 107.6 179.9, 107.1 179.4 Q 106.7 178.9, 105.8 178.9 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 113.5 181.8 L 110.7 177.8 L 112.5 177.8 L 114.5 180.6 L 116.4 177.8 L 118.1 177.8 L 115.3 181.8 L 118.3 186.1 L 116.5 186.1 L 114.3 183.0 L 112.2 186.1 L 110.5 186.1 L 113.5 181.8 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 119.1 183.8 Q 119.1 182.5, 120.2 181.8 Q 121.2 181.1, 123.2 181.1 L 124.4 181.1 L 124.4 180.8 Q 124.4 179.7, 123.9 179.3 Q 123.5 178.9, 122.5 178.9 Q 121.8 178.9, 121.3 179.0 Q 120.8 179.1, 120.0 179.5 L 119.6 178.4 Q 121.1 177.7, 122.5 177.7 Q 124.3 177.7, 125.1 178.4 Q 125.9 179.2, 125.9 180.8 L 125.9 186.1 L 124.7 186.1 Q 124.7 186.0, 124.6 185.8 Q 124.6 185.5, 124.5 185.1 Q 123.3 186.3, 121.8 186.3 Q 120.6 186.3, 119.8 185.6 Q 119.1 184.9, 119.1 183.8 M 120.6 183.8 Q 120.6 184.4, 121.0 184.8 Q 121.4 185.1, 122.1 185.1 Q 122.7 185.1, 123.3 184.8 Q 124.0 184.5, 124.4 184.0 L 124.4 182.2 L 123.3 182.2 Q 121.9 182.2, 121.3 182.6 Q 120.6 183.0, 120.6 183.8 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 132.1 177.7 Q 133.4 177.7, 134.1 178.4 Q 134.8 179.2, 134.8 180.6 L 134.8 186.1 L 133.3 186.1 L 133.3 180.7 Q 133.3 179.8, 132.9 179.3 Q 132.5 178.9, 131.7 178.9 Q 130.9 178.9, 130.3 179.2 Q 129.7 179.6, 129.3 180.2 L 129.3 186.1 L 127.8 186.1 L 127.8 177.8 L 129.0 177.8 L 129.2 179.0 Q 130.3 177.7, 132.1 177.7 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 136.7 181.9 Q 136.7 179.9, 137.7 178.8 Q 138.7 177.7, 140.5 177.7 Q 142.3 177.7, 143.1 178.8 Q 144.0 179.9, 144.0 181.9 L 144.0 182.1 L 138.2 182.1 Q 138.2 183.5, 138.9 184.3 Q 139.5 185.0, 140.7 185.0 Q 141.3 185.0, 141.9 184.9 Q 142.5 184.7, 143.2 184.4 L 143.6 185.4 Q 142.8 185.8, 142.1 186.0 Q 141.3 186.2, 140.6 186.2 Q 138.7 186.2, 137.7 185.1 Q 136.7 184.0, 136.7 181.9 M 140.5 178.9 Q 139.6 178.9, 139.0 179.4 Q 138.4 180.0, 138.3 181.0 L 142.4 181.0 Q 142.3 179.9, 141.8 179.4 Q 141.4 178.9, 140.5 178.9 \" fill=\"#000000\"/>\n",
       "<path class=\"bond-0 atom-0 atom-1\" d=\"M 230.2,109.9 L 281.1,21.2\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-1 atom-1 atom-2\" d=\"M 281.1,21.2 L 369.8,72.1\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-2 atom-2 atom-3\" d=\"M 369.8,72.1 L 318.9,160.8\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-3 atom-3 atom-0\" d=\"M 318.9,160.8 L 230.2,109.9\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path d=\"M 232.8,105.5 L 230.2,109.9 L 234.7,112.5\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 278.5,25.7 L 281.1,21.2 L 285.5,23.8\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 365.3,69.5 L 369.8,72.1 L 367.2,76.5\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 321.5,156.3 L 318.9,160.8 L 314.5,158.2\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path class=\"legend\" d=\"M 256.9 181.9 Q 256.9 180.0, 257.9 178.8 Q 258.9 177.7, 260.8 177.7 Q 262.7 177.7, 263.7 179.1 L 262.7 179.8 Q 262.3 179.3, 261.9 179.1 Q 261.4 178.9, 260.8 178.9 Q 259.7 178.9, 259.1 179.7 Q 258.4 180.4, 258.4 181.9 Q 258.4 183.5, 259.1 184.2 Q 259.7 185.0, 260.9 185.0 Q 261.6 185.0, 262.1 184.9 Q 262.5 184.7, 263.1 184.4 L 263.5 185.5 Q 262.3 186.2, 260.8 186.2 Q 258.9 186.2, 257.9 185.0 Q 256.9 183.9, 256.9 181.9 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 271.1 177.8 L 272.5 177.8 L 268.3 190.0 L 266.9 190.0 L 268.3 186.1 L 267.6 186.1 L 264.7 177.8 L 266.3 177.8 L 268.7 184.8 L 271.1 177.8 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 273.3 181.9 Q 273.3 180.0, 274.3 178.8 Q 275.3 177.7, 277.3 177.7 Q 279.1 177.7, 280.1 179.1 L 279.1 179.8 Q 278.7 179.3, 278.3 179.1 Q 277.8 178.9, 277.3 178.9 Q 276.1 178.9, 275.5 179.7 Q 274.9 180.4, 274.9 181.9 Q 274.9 183.5, 275.5 184.2 Q 276.2 185.0, 277.4 185.0 Q 278.0 185.0, 278.5 184.9 Q 279.0 184.7, 279.5 184.4 L 280.0 185.5 Q 278.8 186.2, 277.3 186.2 Q 275.3 186.2, 274.3 185.0 Q 273.3 183.9, 273.3 181.9 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 281.2 173.9 L 282.6 173.9 L 282.6 186.1 L 281.2 186.1 L 281.2 173.9 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 284.7 181.9 Q 284.7 179.9, 285.7 178.8 Q 286.7 177.7, 288.6 177.7 Q 290.4 177.7, 291.4 178.8 Q 292.5 179.9, 292.5 181.9 Q 292.5 183.9, 291.4 185.1 Q 290.4 186.2, 288.6 186.2 Q 286.7 186.2, 285.7 185.1 Q 284.7 183.9, 284.7 181.9 M 286.2 181.9 Q 286.2 183.4, 286.8 184.2 Q 287.4 185.0, 288.6 185.0 Q 289.7 185.0, 290.3 184.2 Q 290.9 183.4, 290.9 181.9 Q 290.9 180.4, 290.3 179.7 Q 289.7 178.9, 288.6 178.9 Q 287.4 178.9, 286.8 179.7 Q 286.2 180.4, 286.2 181.9 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 297.7 177.7 Q 299.4 177.7, 300.3 178.8 Q 301.3 179.8, 301.3 181.8 Q 301.3 183.9, 300.2 185.0 Q 299.0 186.2, 297.1 186.2 Q 295.8 186.2, 294.6 185.7 L 293.8 185.5 L 293.8 173.9 L 295.4 173.9 L 295.4 178.7 Q 296.2 177.7, 297.7 177.7 M 297.1 185.0 Q 298.3 185.0, 299.0 184.2 Q 299.8 183.3, 299.8 181.8 Q 299.8 180.4, 299.2 179.6 Q 298.6 178.9, 297.6 178.9 Q 296.8 178.9, 296.2 179.3 Q 295.6 179.8, 295.4 180.6 L 295.4 184.8 Q 296.2 185.0, 297.1 185.0 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 309.7 177.8 L 309.7 186.1 L 308.5 186.1 L 308.3 184.9 Q 307.2 186.2, 305.5 186.2 Q 304.1 186.2, 303.4 185.5 Q 302.7 184.7, 302.7 183.3 L 302.7 177.8 L 304.2 177.8 L 304.2 183.2 Q 304.2 184.1, 304.6 184.6 Q 304.9 185.0, 305.8 185.0 Q 306.5 185.0, 307.2 184.7 Q 307.8 184.3, 308.2 183.7 L 308.2 177.8 L 309.7 177.8 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 311.6 179.0 L 311.6 177.8 L 313.2 177.8 L 313.5 175.4 L 314.6 175.4 L 314.6 177.8 L 317.1 177.8 L 317.1 179.0 L 314.6 179.0 L 314.6 183.5 Q 314.6 185.0, 315.8 185.0 Q 316.3 185.0, 317.0 184.7 L 317.2 185.8 Q 316.4 186.2, 315.5 186.2 Q 314.4 186.2, 313.8 185.5 Q 313.1 184.9, 313.1 183.6 L 313.1 179.0 L 311.6 179.0 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 318.3 183.8 Q 318.3 182.5, 319.3 181.8 Q 320.4 181.1, 322.3 181.1 L 323.5 181.1 L 323.5 180.8 Q 323.5 179.7, 323.1 179.3 Q 322.7 178.9, 321.7 178.9 Q 321.0 178.9, 320.5 179.0 Q 320.0 179.1, 319.2 179.5 L 318.7 178.4 Q 320.3 177.7, 321.7 177.7 Q 323.5 177.7, 324.3 178.4 Q 325.1 179.2, 325.1 180.8 L 325.1 186.1 L 323.9 186.1 Q 323.9 186.0, 323.8 185.8 Q 323.8 185.5, 323.7 185.1 Q 322.5 186.3, 321.0 186.3 Q 319.8 186.3, 319.0 185.6 Q 318.3 184.9, 318.3 183.8 M 319.8 183.8 Q 319.8 184.4, 320.2 184.8 Q 320.6 185.1, 321.3 185.1 Q 321.9 185.1, 322.5 184.8 Q 323.1 184.5, 323.5 184.0 L 323.5 182.2 L 322.4 182.2 Q 321.1 182.2, 320.4 182.6 Q 319.8 183.0, 319.8 183.8 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 331.2 177.7 Q 332.5 177.7, 333.2 178.4 Q 333.9 179.2, 333.9 180.6 L 333.9 186.1 L 332.4 186.1 L 332.4 180.7 Q 332.4 179.8, 332.0 179.3 Q 331.7 178.9, 330.8 178.9 Q 330.1 178.9, 329.5 179.2 Q 328.8 179.6, 328.4 180.2 L 328.4 186.1 L 326.9 186.1 L 326.9 177.8 L 328.2 177.8 L 328.3 179.0 Q 329.4 177.7, 331.2 177.7 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 335.8 181.9 Q 335.8 179.9, 336.8 178.8 Q 337.8 177.7, 339.7 177.7 Q 341.5 177.7, 342.3 178.8 Q 343.1 179.9, 343.1 181.9 L 343.1 182.1 L 337.3 182.1 Q 337.4 183.5, 338.0 184.3 Q 338.6 185.0, 339.8 185.0 Q 340.4 185.0, 341.0 184.9 Q 341.6 184.7, 342.3 184.4 L 342.8 185.4 Q 342.0 185.8, 341.2 186.0 Q 340.5 186.2, 339.7 186.2 Q 337.9 186.2, 336.8 185.1 Q 335.8 184.0, 335.8 181.9 M 339.7 178.9 Q 338.7 178.9, 338.1 179.4 Q 337.6 180.0, 337.4 181.0 L 341.5 181.0 Q 341.4 179.9, 340.9 179.4 Q 340.5 178.9, 339.7 178.9 \" fill=\"#000000\"/>\n",
       "<path class=\"bond-0 atom-0 atom-1\" d=\"M 561.5,160.8 L 459.9,172.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-1 atom-1 atom-2\" d=\"M 459.9,172.0 L 417.8,78.8\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-2 atom-2 atom-3\" d=\"M 417.8,78.8 L 493.4,10.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-3 atom-3 atom-4\" d=\"M 493.4,10.0 L 582.2,60.7\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-3 atom-3 atom-4\" d=\"M 495.5,28.8 L 564.9,68.5\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-4 atom-4 atom-0\" d=\"M 582.2,60.7 L 561.5,160.8\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path d=\"M 556.4,161.3 L 561.5,160.8 L 562.5,155.8\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 464.9,171.4 L 459.9,172.0 L 457.8,167.3\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 419.9,83.5 L 417.8,78.8 L 421.6,75.4\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 489.6,13.4 L 493.4,10.0 L 497.8,12.5\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 577.8,58.1 L 582.2,60.7 L 581.2,65.7\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path class=\"legend\" d=\"M 452.7 181.9 Q 452.7 180.0, 453.7 178.8 Q 454.7 177.7, 456.6 177.7 Q 458.5 177.7, 459.5 179.1 L 458.5 179.8 Q 458.1 179.3, 457.6 179.1 Q 457.2 178.9, 456.6 178.9 Q 455.5 178.9, 454.9 179.7 Q 454.2 180.4, 454.2 181.9 Q 454.2 183.5, 454.9 184.2 Q 455.5 185.0, 456.7 185.0 Q 457.4 185.0, 457.9 184.9 Q 458.3 184.7, 458.9 184.4 L 459.3 185.5 Q 458.1 186.2, 456.6 186.2 Q 454.7 186.2, 453.7 185.0 Q 452.7 183.9, 452.7 181.9 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 466.9 177.8 L 468.3 177.8 L 464.1 190.0 L 462.7 190.0 L 464.1 186.1 L 463.4 186.1 L 460.5 177.8 L 462.1 177.8 L 464.5 184.8 L 466.9 177.8 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 469.1 181.9 Q 469.1 180.0, 470.1 178.8 Q 471.1 177.7, 473.1 177.7 Q 474.9 177.7, 475.9 179.1 L 474.9 179.8 Q 474.5 179.3, 474.1 179.1 Q 473.6 178.9, 473.1 178.9 Q 471.9 178.9, 471.3 179.7 Q 470.7 180.4, 470.7 181.9 Q 470.7 183.5, 471.3 184.2 Q 472.0 185.0, 473.2 185.0 Q 473.8 185.0, 474.3 184.9 Q 474.8 184.7, 475.3 184.4 L 475.8 185.5 Q 474.6 186.2, 473.1 186.2 Q 471.1 186.2, 470.1 185.0 Q 469.1 183.9, 469.1 181.9 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 477.0 173.9 L 478.4 173.9 L 478.4 186.1 L 477.0 186.1 L 477.0 173.9 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 480.5 181.9 Q 480.5 179.9, 481.5 178.8 Q 482.5 177.7, 484.4 177.7 Q 486.3 177.7, 487.3 178.8 Q 488.3 179.9, 488.3 181.9 Q 488.3 183.9, 487.3 185.1 Q 486.3 186.2, 484.4 186.2 Q 482.5 186.2, 481.5 185.1 Q 480.5 183.9, 480.5 181.9 M 482.0 181.9 Q 482.0 183.4, 482.6 184.2 Q 483.2 185.0, 484.4 185.0 Q 485.5 185.0, 486.1 184.2 Q 486.8 183.4, 486.8 181.9 Q 486.8 180.4, 486.1 179.7 Q 485.5 178.9, 484.4 178.9 Q 483.2 178.9, 482.6 179.7 Q 482.0 180.4, 482.0 181.9 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 493.5 177.7 Q 495.2 177.7, 496.2 178.8 Q 497.1 179.8, 497.1 181.8 Q 497.1 183.9, 496.0 185.0 Q 494.9 186.2, 492.9 186.2 Q 492.0 186.2, 491.2 186.0 L 491.2 190.0 L 489.7 190.0 L 489.7 177.8 L 490.9 177.8 L 491.1 178.8 Q 491.5 178.3, 492.1 178.0 Q 492.8 177.7, 493.5 177.7 M 492.9 185.0 Q 494.1 185.0, 494.9 184.2 Q 495.6 183.3, 495.6 181.8 Q 495.6 180.4, 495.0 179.6 Q 494.5 178.9, 493.4 178.9 Q 492.6 178.9, 492.0 179.3 Q 491.4 179.7, 491.2 180.5 L 491.2 184.8 Q 492.0 185.0, 492.9 185.0 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 498.5 181.9 Q 498.5 179.9, 499.5 178.8 Q 500.5 177.7, 502.4 177.7 Q 504.2 177.7, 505.0 178.8 Q 505.8 179.9, 505.8 181.9 L 505.8 182.1 L 500.0 182.1 Q 500.1 183.5, 500.7 184.3 Q 501.3 185.0, 502.5 185.0 Q 503.1 185.0, 503.7 184.9 Q 504.3 184.7, 505.0 184.4 L 505.5 185.4 Q 504.7 185.8, 503.9 186.0 Q 503.2 186.2, 502.4 186.2 Q 500.6 186.2, 499.5 185.1 Q 498.5 184.0, 498.5 181.9 M 502.4 178.9 Q 501.4 178.9, 500.8 179.4 Q 500.3 180.0, 500.1 181.0 L 504.2 181.0 Q 504.1 179.9, 503.6 179.4 Q 503.2 178.9, 502.4 178.9 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 511.3 177.7 Q 512.7 177.7, 513.3 178.4 Q 514.0 179.2, 514.0 180.6 L 514.0 186.1 L 512.5 186.1 L 512.5 180.7 Q 512.5 179.8, 512.2 179.3 Q 511.8 178.9, 511.0 178.9 Q 510.2 178.9, 509.6 179.2 Q 509.0 179.6, 508.6 180.2 L 508.6 186.1 L 507.1 186.1 L 507.1 177.8 L 508.3 177.8 L 508.5 179.0 Q 509.6 177.7, 511.3 177.7 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 515.9 179.0 L 515.9 177.8 L 517.5 177.8 L 517.8 175.4 L 518.9 175.4 L 518.9 177.8 L 521.4 177.8 L 521.4 179.0 L 518.9 179.0 L 518.9 183.5 Q 518.9 185.0, 520.1 185.0 Q 520.6 185.0, 521.3 184.7 L 521.5 185.8 Q 520.6 186.2, 519.8 186.2 Q 518.7 186.2, 518.1 185.5 Q 517.4 184.9, 517.4 183.6 L 517.4 179.0 L 515.9 179.0 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 522.6 181.9 Q 522.6 179.9, 523.6 178.8 Q 524.6 177.7, 526.4 177.7 Q 528.3 177.7, 529.1 178.8 Q 529.9 179.9, 529.9 181.9 L 529.9 182.1 L 524.1 182.1 Q 524.2 183.5, 524.8 184.3 Q 525.4 185.0, 526.6 185.0 Q 527.2 185.0, 527.8 184.9 Q 528.4 184.7, 529.1 184.4 L 529.6 185.4 Q 528.7 185.8, 528.0 186.0 Q 527.3 186.2, 526.5 186.2 Q 524.6 186.2, 523.6 185.1 Q 522.6 184.0, 522.6 181.9 M 526.4 178.9 Q 525.5 178.9, 524.9 179.4 Q 524.4 180.0, 524.2 181.0 L 528.3 181.0 Q 528.2 179.9, 527.7 179.4 Q 527.3 178.9, 526.4 178.9 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 535.4 177.7 Q 536.7 177.7, 537.4 178.4 Q 538.1 179.2, 538.1 180.6 L 538.1 186.1 L 536.6 186.1 L 536.6 180.7 Q 536.6 179.8, 536.2 179.3 Q 535.9 178.9, 535.0 178.9 Q 534.3 178.9, 533.7 179.2 Q 533.0 179.6, 532.6 180.2 L 532.6 186.1 L 531.1 186.1 L 531.1 177.8 L 532.4 177.8 L 532.5 179.0 Q 533.7 177.7, 535.4 177.7 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 540.0 181.9 Q 540.0 179.9, 541.0 178.8 Q 542.0 177.7, 543.9 177.7 Q 545.7 177.7, 546.5 178.8 Q 547.3 179.9, 547.3 181.9 L 547.3 182.1 L 541.6 182.1 Q 541.6 183.5, 542.2 184.3 Q 542.8 185.0, 544.0 185.0 Q 544.7 185.0, 545.2 184.9 Q 545.8 184.7, 546.6 184.4 L 547.0 185.4 Q 546.2 185.8, 545.4 186.0 Q 544.7 186.2, 543.9 186.2 Q 542.1 186.2, 541.1 185.1 Q 540.0 184.0, 540.0 181.9 M 543.9 178.9 Q 542.9 178.9, 542.4 179.4 Q 541.8 180.0, 541.6 181.0 L 545.7 181.0 Q 545.6 179.9, 545.2 179.4 Q 544.7 178.9, 543.9 178.9 \" fill=\"#000000\"/>\n",
       "</svg>"
      ],
      "text/plain": [
       "<IPython.core.display.SVG object>"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "display_structures(ring_smiles_list)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b3bb2e03",
   "metadata": {},
   "source": [
    "In the case of fused ring systems, a single atom can have multiple ring closure digits. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "624a8bf4",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.882396Z",
     "start_time": "2025-05-05T16:57:14.877501Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAIAAAD2HxkiAAAABmJLR0QA/wD/AP+gvaeTAAAS00lEQVR4nO3dSVAUZx/H8QbZ3XBfcF9QXOIuGnGJSmmUskwsDjlQuaS4mCLJidwmlUqV5JKaW4pDqkJyI5VDRo2pAhV3RDSugLgvuCKiMihrv4fnzdQElDBDd/97+X4Oqcr7znQ/dM+vl+f/PE9idF3XAMiJlW4A4HWEEBBGCAFhhBAQRggBYYQQEEYIAWGEEBBGCAFhhBAQRggBYYQQEEYIAWGEEBBGCAFhhBAQRggBYYQQEEYIAWGEEBBGCAFhhBAQRggBYYQQEEYIAWGEEBBGCAFhhBAQRggBYYQQEEYIAWGEEBBGCAFhhBAQRggBYYQQEEYIAWGEEBBGCAFhhBAQRggBYYQQEEYIAWGEEBBGCAFhhBAQRggBYYQQEEYIAWGEEBBGCAFhhBAQRggBYYQQEEYIAWGEEBBGCAFhhBAQRggBYYQQEEYIAWGEEBBGCAFhhBAQRggBYYQQEEYIAWGEEBBGCAFhhBAQ5rkQNjY2rl+/fty4cfPnz6+rq5NuDjRN01pbW3ft2rVkyZLs7Ozm5mbp5lhO94yurq7du3cPGjQo9LfHxMTs3LkzGAxKN83TioqKEhMTQyclLi7u888/7+7ulm6XdbwSwurq6pUrV6rTnJKS8sUXX4wZM0b965QpU/bu3SvdQC+qr6/ftm2bOgvx8fHbtm1LTk5W/7p06dLz589LN9Ai7g/hgwcP8vPzY2NjNU0bPHjwJ5980t7erv6v7777bvTo0eqsb968+fLly7JN9Y5Xr175fD51A4yPj8/Ozn758qWu6+3t7Z9++qmKYmxsbF5e3uPHj6Ubazo3h7Ctrc3v9w8bNkyd6YKCghcvXvT4THt7u9/vHz58eOgzzc3NIq31iK6urpKSknHjxoVi9ujRox6fef78eWFhYUJCgqZpqampRUVFbW1tIq21hmtDGAgEZsyYoe5yOTk5169f7+PDjY2NBQUF6nVx1KhRfr+/s7PTsqZ6R2VlZWZmpjopmZmZp06d6uPDV69e3b59u/pwenr6vn37LGunxVwYwpqamq1bt6qTN3fu3D///LOfXzx37ty6devUF5csWXLkyBFT2+kp9+7dy8vLi4mJ0TRt0qRJJSUl/ex6KSsrmzdvXuiV4cqVK2Y31XquCuGzZ89CN7SRI0f6/f6Ojo5INxIIBKZNmxa6hd66dcuElnpIMBj0+XzqNS8lJaWwsPDVq1cRbcH1rwwuCWF7e3txcbHqZYmLi8vPz3/69GnUW2ttbS0qKhoyZIimacnJyVH8bqDrend3d2lp6dSpU1U1KDc39/bt21FvzcWvDG4IYVlZ2fz580NPLJcuXTJks/fv3w89QaWlpfX/CQq6rp85c2bNmjXqpCxbtuzYsWOGbPbs2bNr164NlTGOHj1qyGZlOTuEV69ezcnJUadk9uzZpaWlhu/i9OnTq1atUrtYuXJl330J0HW9oaEhVBOaMGFCcXFxV1eXsbtw2SuDU0OoerFVoUn1Yr9588akfXV3d4d61WNiYt7aqw793zWhhISEt9aEjBIMBkOvDNG9atqH80KoCk1jx47to9BkhpaWllB9efDgwT6fz7zYO1GPmtCNGzcs2GnUna624rAQHjp0aNGiRepMb9iwwfqRTfX19bm5uaY+ADtOTU3Nli1b1DHJyMg4cOCAxQ3oUX6srKy0uAED5JgQ3r17Ny8vTx3oyZMny17zysvLFyxYoBqzadMmo7qCHKd3TUiqx7I/A3FsywEhVM+BSUlJ6unf5/O9fv1aulF6R0eHgUURx1G1u9TUVFW7s8mfHz4k1eyeAgPZOoSq0DRlypRQoenOnTvSjfoX+9wKrGRSTcgo9fX14X3m9p8iY98QVlVVrV69Wh3K5cuXnzhxQrpF79Tjpeivv/6SbpFZwmtC6enpdv5997hS2HmKjB1DGF4lnzhxohmFJjMEAoHp06eHugdv3rwp3SIj9Z7ZYP8nPaeMd7NXCNV4saFDh4bGi6lpZk6hCmWq/apQ5qz2v1XvmpCz5vjZf7ybjULYYxiEc+8k4UNGHHQnfyvxmpBR7DxFxhYhDB8QaLcDFLXwd9oVK1acPHlSukWR6V0Tkm6RAew53k04hPZ/VBgINd5t/PjxofFuDx8+lG7UfwuvCamxQXaoCRnFhlNkxELolJfmgXPQb1rVhCZPnmzbmpBRbDVFRiaEZWVlGRkZoe5jV06X7uH69euh8W6zZs2y4Xi3Hs/Pdq4JGcUmU2SsDmFtbW1olbs5c+bs37/f4gbIOnjw4MKFC9Wfv3HjxosXL0q3SNcdWxMyRPgUGanxbtaFsKmpqaCgIC4uTtO0ESNGuH4JrXdR493UqqdqvNuTJ0+kGuP0mpBRZKfIWBFCW/3sbKLHJSm65XAGyN2jC6IgNUXG9BCWl5fb8AHMJmpraz/88EN1cCJaGG6AXFkTMor1U2RMDGH4dcWeXRE2EQgEZs6cGboj9b1E6gC5uyZklPApMhbMETElhOEzSpiE3h+qYNP3YuGG7MILNSGjWDZFxuAQ9p5b6YjytE2E/2czjF0iyQtL6JrEgikyRoYwfJUBFiaLWnV1dfhigcePHx/I1urq6rxcEzKKqZ1YxoTQHevt2Ichs5mpCRnLvHLOQEM48EXO8S7q2Eaxrkd4TUi9FFATMkpDQ0P4wAZD7jfRh9DYRc7xLpHOZugxKOfChQvWtNNTjJ0iE2UITVrkHO9y+PDh8Hl9b43WtWvXqAlZxsApMhGH8Ny5c+np6aYuco636mOGe+9RV7adqOEy4Uc+JSVly5YtUbwoRhDCFy9ebN++XT0Nx8bGmrrIOd6lqakptNbLiBEj9uzZ89NPPzluyqLLhD+DxMfHf/XVVxF9PYIQZmVlqd2kpaVVVFRE2E4Y6cqVK9nZ2VqYrKys6upq6XZ52p49e9QtUZUx+v/FCEKo7oHffPNN5M2DKf7444/k5OTExMRffvmFmpAdBIPBjz/+WOWw/9+K0XVd65/Y2Fhd1+/evatmXsMOkpKS2tra3rx5E7oGQ1Z3d7ca6RZBssxsD4D/FkEIVb7VPwEYJYIQpqSkaJqmlqmCTahnHvW6DjtQ5yKiM8LjKCCMEAJGiuLZhBACwgghICyCENIHYEOcFBfgTggYiXdCwHkIISCMEALC6JhxNk6KC3AnBIxExwzgPIQQEEYIAWF0zDgbJ8UFuBMCRqJjBnAeQggII4SAMDpmnI2T4gLcCQEj0TEDOA8hBIQRQkAYHTPOxklxAe6EgJHomAGchxACwgghIIyOGWfjpLgAd0LASHTMAM5DCAFhvBMCwrgTAsIIoYPxbGJDdMwAzkMIAWF0zADCuBM6GJdFG+KdEHAeQggII4SAMDpmAGHcCR2My6IN0TEDOA8hBIQRQkAYHTOAMO6EDsZl0YbomAGchxACwgghIIyOGUAYd0IH47JoQ3TMAM5DCAFhhBAQRscMIIw7oYNxWbQhOmYA5yGEgDBCCAijYwYQxp3Qwbgs2hAdM4DzEEJAGO+EgDDuhIAwQuhgPJvYUEtLi6ZpwWCw/18hhICROjs7NU3r6urq/1cIISAs4hDu2LEjolstTKLr+m+//ZaYmBgTExMIBKSbg//7+eefI/6O3m85OTnqK4mJiXv27On/F2G46urqrKys8POYnZ195coV6XZ5WkVFRVpamjodWVlZ/f9iBCHUdf37779PTExUu9m8eTNn3XqNjY0FBQWDBg3SNG3UqFE//PDDjz/+OGbMGE3T4uLi8vPznzx5It1Gz2lpafH5fLGx/3+u3Lhx4/Pnz/v/9chCqPb30UcfDRs2TNO0+Pj4goKC5ubmSDeCKLS3t/v9/uHDh/c+8k1NTQUFBXFxcZqmjRgxwu/3d3R0yLbWI7q7u0tLS6dMmaJpWkxMzLRp06qqqiLdSMQhVHpcj/1+f2dnZ3SbQn+UlZVlZGT0/QxSW1u7detW9Zm5c+ceOHDA+nZ6SlVV1fvvv68O+PLly0+cOBHddqIMoXL27Nm1a9eqRixduvTo0aMD2Rreqra2dtu2beogz5kzZ//+/X1/PhAIzJgxQ30+Jyfnxo0b1rTTUxoaGvLz89Xz58SJE4uLi7u6uqLe2oBCqAQCgWnTpoXO+q1btwa+Tei9HjKLiora2tr688W2tja/369eGRISEgoKCl68eGF2az2itbW1qKho6NChoWP78uXLAW7TgBDquh4MBouKioYMGaJpWkpKSmFh4atXrwzZsjd1dHQUFxcPsLvlwYMHoav1hAkTBni1hq7rgUBg+vTpofvNzZs3DdmsMSFU7t27l5eXp0ZRTZo0qaSkpLu728Dte0R5efnChQtD/WwXL14cyNbOnDmzZs2a0HvL8ePHjWqnp5w7d27dunXqMC5ZsuTIkSMGbtzIECqVlZWZmZmquZmZmZWVlYbvwq2uXbuWm5urDt2sWbNKS0sN2WyPHrzc3Nw7d+4YsmUvsKAP0vgQ6rre1dVVUlIybtw4TdNiY2Pz8vIePXpkxo5cQxWaVA128ODBPp/vzZs3xu4iGAz6fL6kpCT1yuDz+V6/fm3sLlymj5qQsUwJofL8+fPCwkL1w0pNTS0qKjL8h+UC4ResmJiYvLy8hw8fmre7u3fv5uXlqZvt5MmTS0pKzNuXo5WVlc2bN8+acSkmhlCpr68PjXdLT0/fu3ev2Xt0kPBH95UrV546dcqa/R46dOi9995T+/3ggw8uXLhgzX4doa6uLrwmtG/fPrP3aHoIlbKysvnz54euK5cvX7Zmv7Yl3oml7sBjx44NvTI8fvzYygbYUNQ1oQGyKIS6hU/YNqfezZKTk+1QzmlqaiosLExISLD4Z2c34TUhdUmycgiudSFUvDzeTfVSTp06NVRoun37tnSjdL3XA9h/DspxmYMHD4bXhKx/OLc6hIqpVRd7qq6uDtXrli1bduzYMekW9dSjK6Kmpka6RaYzqSYUKZkQKh4Z79Z75Iptb/7qlSF8ioxbx7v1rgkJFmwkQ6j/MxJPjXdLTk522Xi38DGcDvpNP336NPTKMHr0aJe9MlhcE+oP4RAq9+/fD3UVpqWluWO8W4/ZDNevX5duUWTOnj0bmry/dOlSGz4/R6GysnLVqlXW14T6ZosQKqdPn7bhAYpCTU3Nli1b1B/i9Hl9gUDAhj1JUQivCdntQm+jEOrOH+/27Nmz0IPcyJEj3THDvUdNxefztba2SjcqAraqCb2VvUKohL80DxkyxIyBlIZrb28vLi4ePXq09s/ko6dPn0o3ykjiowuiYNuaUA92DKFSX18f6j6ePXu2VPdxf/QYD3Tp0iXpFpmloqJi8eLF6i9dv37933//Ld2id7J/TSjEviFUysvLFyxYYNvf99WrV0MjY21+pTCK/V8ZHFQTUuweQv3fT3rx8fE2edLz+BwRe/75Dl3XwwEhVHr3eUhd3noPfbbbrcAy4Q8C4lNknLvClWNCqIT3/i9evNj68W6HDx9etGiRasCGDRvOnz9vcQNsSHyKTPivIiMjw3E1IYeFUDFpvZ2+9Z4Oa//uQctITZGxz/PRQDgyhPq/V55T490GvvLcu6iSCQtD/Ccrp8io2KemptqqpyA6Tg2h0tDQYOowCJZIioIFU2RcVhNydgiVqqqq1atXq1OyYsWKkydPGrVZQxY59yaTpsjYqivIKG4Ioa7r3d3dJSUl48eP14wYGm/sIueeZewUGVUUUYsA2KcoYgiXhFAZ+MKBZixy7nEDnyLj+uVwXBVCJerp0iKdrh4R9RSZ8IXh3FoTcmEIlfDF5Ddt2tT3u7sHl9uwnnplCJ9N2/cgB+8skeraEOr/LKHV98wGLy88JaI/rwzhNSHxtScs4OYQKqqeqxaTTExMzM3NVav6tbS07NixQ/0avLwEo4jwKTIjR478+uuv1f/e2dn52WefqcGf3qkJuT+ESm1tbaiMkZSUtGPHDtXPpmnamjVrWIxYRHl5+cyZM9VZGDVq1Jdffqm6UtWYRO/UhLwSQqWwsFDdEpWEhIRvv/1WulGeFgwGd+7cqfpOlUGDBu3evdtTNaEYXdc1L2lubs7NzW1sbJwxY8avv/6akpIi3SJodXV1u3btamxsnDt37u+//65e473DcyEE7CZWugGA1xFCQBghBIQRQkAYIQSEEUJAGCEEhBFCQBghBIQRQkAYIQSEEUJAGCEEhBFCQBghBIQRQkAYIQSEEUJAGCEEhBFCQBghBIQRQkAYIQSEEUJAGCEEhBFCQBghBIQRQkAYIQSEEUJAGCEEhBFCQBghBIQRQkAYIQSEEUJAGCEEhBFCQBghBIQRQkAYIQSEEUJAGCEEhBFCQBghBIQRQkAYIQSEEUJAGCEEhBFCQBghBIQRQkAYIQSEEUJAGCEEhBFCQBghBIQRQkAYIQSEEUJAGCEEhBFCQBghBIQRQkAYIQSEEUJAGCEEhBFCQBghBIQRQkDY/wBReO/fk1nL9AAAANB6VFh0cmRraXRQS0wgcmRraXQgMjAyNC4wOS42AAB4nIWOMQ7CMAxFf5I2bemCQIKzsBCJqZwBReIiFRXHgJmBAVZgqXsD1AGJpYxdOQI4oaxg6es/2/mRn+XhAa4+S+JTPVbKKoTGkl11LuVv//8uhYCQkAoqQBAi1NARohhxghBIgJk7QgupeKt15ObjNY8EvsddT/WFnVyzaS0d7yvPc2qoyF6l48GuoWoB47jKLe2HhefbuZ6wed621nDWc0aN4ey0yxrO+j8pt4aznkdvnS4yYz4AoGIAAAERelRYdE1PTCByZGtpdCAyMDI0LjA5LjYAAHicfVJRbsMgDP3nFL5AKpsAgc8mqapqaiJt2e6w/91fsyHErRQBeZJtHsbPjgFZn/PH7x8cy87GAGDjSynBT4+I5gliwHi7PxaYtutYI9P6vWxfQAhEfIf3O/e6rc8aIZigwwvnc4hieZQFOZSNyrSFGUOIhcmVuFNmL0y6DL3dc7oUwynTVSaVc490ntLXx73lMMn5ecbAxENOQ82QebuYhpbIvENKQ0naeVlI11DCUykvZyVdQ8ptmd9GVYY3rsusw5NtdULsQK9jIIbTXhPDa0eJEbRvxBi0PcSI2gViJBVLgldNcpsOPxeGGhApr4WLX/9Yts0/VNmQ3tKP9rIAAAB8elRYdFNNSUxFUyByZGtpdCAyMDI0LjA5LjYAAHicPczBDcAgCEDRVXpsEzSgaCUeWcvhiwR7wIQfeUqqWlT9pWvdifJbqQPmhsQwfS8MCTPL6BYwj97HDiLCHhCRbbDt2mDuL62A3Vq0mzDTQcM8ZIgH/D2q4FwKL7hnfT0BJIRo95NuAAAAAElFTkSuQmCC",
      "image/svg+xml": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 150.0,189.0 L 82.5,227.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 82.5,227.9 L 15.0,188.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-2 atom-3' d='M 15.0,188.9 L 15.1,110.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-3 atom-3 atom-4' d='M 15.1,110.9 L 82.6,72.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-4 atom-4 atom-5' d='M 82.6,72.0 L 150.0,111.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-5 atom-5 atom-6' d='M 150.0,111.0 L 217.5,72.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-6 atom-6 atom-7' d='M 217.5,72.1 L 285.0,111.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-7 atom-7 atom-8' d='M 285.0,111.1 L 284.9,189.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-8 atom-8 atom-9' d='M 284.9,189.1 L 217.4,228.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-9 atom-5 atom-0' d='M 150.0,111.0 L 150.0,189.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-10 atom-9 atom-0' d='M 217.4,228.0 L 150.0,189.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 85.8,225.9 L 82.5,227.9 L 79.1,225.9' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 18.4,190.8 L 15.0,188.9 L 15.0,185.0' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 15.1,114.8 L 15.1,110.9 L 18.4,109.0' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 79.2,74.0 L 82.6,72.0 L 86.0,74.0' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 214.2,74.1 L 217.5,72.1 L 220.9,74.1' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 281.6,109.2 L 285.0,111.1 L 285.0,115.0' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 284.9,185.2 L 284.9,189.1 L 281.6,191.0' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 220.8,226.0 L 217.4,228.0 L 214.0,226.0' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "</svg>\n"
      ],
      "text/html": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 150.0,189.0 L 82.5,227.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 82.5,227.9 L 15.0,188.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-2 atom-3' d='M 15.0,188.9 L 15.1,110.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-3 atom-3 atom-4' d='M 15.1,110.9 L 82.6,72.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-4 atom-4 atom-5' d='M 82.6,72.0 L 150.0,111.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-5 atom-5 atom-6' d='M 150.0,111.0 L 217.5,72.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-6 atom-6 atom-7' d='M 217.5,72.1 L 285.0,111.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-7 atom-7 atom-8' d='M 285.0,111.1 L 284.9,189.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-8 atom-8 atom-9' d='M 284.9,189.1 L 217.4,228.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-9 atom-5 atom-0' d='M 150.0,111.0 L 150.0,189.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-10 atom-9 atom-0' d='M 217.4,228.0 L 150.0,189.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 85.8,225.9 L 82.5,227.9 L 79.1,225.9' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 18.4,190.8 L 15.0,188.9 L 15.0,185.0' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 15.1,114.8 L 15.1,110.9 L 18.4,109.0' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 79.2,74.0 L 82.6,72.0 L 86.0,74.0' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 214.2,74.1 L 217.5,72.1 L 220.9,74.1' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 281.6,109.2 L 285.0,111.1 L 285.0,115.0' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 284.9,185.2 L 284.9,189.1 L 281.6,191.0' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 220.8,226.0 L 217.4,228.0 L 214.0,226.0' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<rdkit.Chem.rdchem.Mol at 0x34afad230>"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mol = Chem.MolFromSmiles(\"C12CCCCC1CCCC2\")\n",
    "mol"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "373c3c3a",
   "metadata": {},
   "source": [
    "Also, note that a ring closure digit can be \"reused\".  In the SMILES below the digit \"1\" is used to indicate the closure of two different rings.  Note that the SMILES could also be expressed as \"C1CCCCC1C2CCCCO2\".  Go ahead, try it. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "794fed10",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.892857Z",
     "start_time": "2025-05-05T16:57:14.887630Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "image/svg+xml": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 108.6,204.1 L 108.7,258.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 108.7,258.1 L 155.5,285.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-2 atom-3' d='M 155.5,285.0 L 202.2,257.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-3 atom-3 atom-4' d='M 202.2,257.9 L 202.1,203.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-4 atom-4 atom-5' d='M 202.1,203.9 L 155.3,177.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-5 atom-5 atom-6' d='M 155.3,177.0 L 155.2,123.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-6 atom-6 atom-7' d='M 155.2,123.0 L 201.9,95.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-7 atom-7 atom-8' d='M 201.9,95.9 L 201.8,41.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-8 atom-8 atom-9' d='M 201.8,41.9 L 154.9,15.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-9 atom-9 atom-10' d='M 154.9,15.0 L 108.2,42.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-10 atom-10 atom-11' d='M 108.2,42.1 L 108.3,62.4' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-10 atom-10 atom-11' d='M 108.3,62.4 L 108.3,82.7' style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-11 atom-5 atom-0' d='M 155.3,177.0 L 108.6,204.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-12 atom-11 atom-6' d='M 120.7,103.2 L 137.9,113.1' style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-12 atom-11 atom-6' d='M 137.9,113.1 L 155.2,123.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 108.6,206.8 L 108.6,204.1 L 110.9,202.7' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 108.7,255.4 L 108.7,258.1 L 111.0,259.4' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 153.1,283.7 L 155.5,285.0 L 157.8,283.6' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 199.9,259.3 L 202.2,257.9 L 202.2,255.2' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 202.1,206.6 L 202.1,203.9 L 199.7,202.6' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 199.5,97.3 L 201.9,95.9 L 201.9,93.2' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 201.8,44.6 L 201.8,41.9 L 199.4,40.6' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 157.3,16.3 L 154.9,15.0 L 152.6,16.4' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 110.6,40.7 L 108.2,42.1 L 108.2,43.1' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path class='atom-11' d='M 97.8 96.2\n",
       "Q 97.8 90.7, 100.5 87.6\n",
       "Q 103.3 84.5, 108.3 84.5\n",
       "Q 113.4 84.5, 116.1 87.6\n",
       "Q 118.9 90.7, 118.9 96.2\n",
       "Q 118.9 101.7, 116.1 104.9\n",
       "Q 113.4 108.1, 108.3 108.1\n",
       "Q 103.3 108.1, 100.5 104.9\n",
       "Q 97.8 101.8, 97.8 96.2\n",
       "M 108.3 105.5\n",
       "Q 111.8 105.5, 113.7 103.1\n",
       "Q 115.6 100.8, 115.6 96.2\n",
       "Q 115.6 91.7, 113.7 89.4\n",
       "Q 111.8 87.1, 108.3 87.1\n",
       "Q 104.8 87.1, 102.9 89.4\n",
       "Q 101.0 91.6, 101.0 96.2\n",
       "Q 101.0 100.8, 102.9 103.1\n",
       "Q 104.8 105.5, 108.3 105.5\n",
       "' fill='#FF0000'/>\n",
       "</svg>\n"
      ],
      "text/html": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 108.6,204.1 L 108.7,258.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 108.7,258.1 L 155.5,285.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-2 atom-3' d='M 155.5,285.0 L 202.2,257.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-3 atom-3 atom-4' d='M 202.2,257.9 L 202.1,203.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-4 atom-4 atom-5' d='M 202.1,203.9 L 155.3,177.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-5 atom-5 atom-6' d='M 155.3,177.0 L 155.2,123.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-6 atom-6 atom-7' d='M 155.2,123.0 L 201.9,95.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-7 atom-7 atom-8' d='M 201.9,95.9 L 201.8,41.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-8 atom-8 atom-9' d='M 201.8,41.9 L 154.9,15.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-9 atom-9 atom-10' d='M 154.9,15.0 L 108.2,42.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-10 atom-10 atom-11' d='M 108.2,42.1 L 108.3,62.4' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-10 atom-10 atom-11' d='M 108.3,62.4 L 108.3,82.7' style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-11 atom-5 atom-0' d='M 155.3,177.0 L 108.6,204.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-12 atom-11 atom-6' d='M 120.7,103.2 L 137.9,113.1' style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-12 atom-11 atom-6' d='M 137.9,113.1 L 155.2,123.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 108.6,206.8 L 108.6,204.1 L 110.9,202.7' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 108.7,255.4 L 108.7,258.1 L 111.0,259.4' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 153.1,283.7 L 155.5,285.0 L 157.8,283.6' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 199.9,259.3 L 202.2,257.9 L 202.2,255.2' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 202.1,206.6 L 202.1,203.9 L 199.7,202.6' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 199.5,97.3 L 201.9,95.9 L 201.9,93.2' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 201.8,44.6 L 201.8,41.9 L 199.4,40.6' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 157.3,16.3 L 154.9,15.0 L 152.6,16.4' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 110.6,40.7 L 108.2,42.1 L 108.2,43.1' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path class='atom-11' d='M 97.8 96.2\n",
       "Q 97.8 90.7, 100.5 87.6\n",
       "Q 103.3 84.5, 108.3 84.5\n",
       "Q 113.4 84.5, 116.1 87.6\n",
       "Q 118.9 90.7, 118.9 96.2\n",
       "Q 118.9 101.7, 116.1 104.9\n",
       "Q 113.4 108.1, 108.3 108.1\n",
       "Q 103.3 108.1, 100.5 104.9\n",
       "Q 97.8 101.8, 97.8 96.2\n",
       "M 108.3 105.5\n",
       "Q 111.8 105.5, 113.7 103.1\n",
       "Q 115.6 100.8, 115.6 96.2\n",
       "Q 115.6 91.7, 113.7 89.4\n",
       "Q 111.8 87.1, 108.3 87.1\n",
       "Q 104.8 87.1, 102.9 89.4\n",
       "Q 101.0 91.6, 101.0 96.2\n",
       "Q 101.0 100.8, 102.9 103.1\n",
       "Q 104.8 105.5, 108.3 105.5\n",
       "' fill='#FF0000'/>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<rdkit.Chem.rdchem.Mol at 0x34afad2a0>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Chem.MolFromSmiles(\"C1CCCCC1C1CCCCO1\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "379dd936",
   "metadata": {},
   "source": [
    "### Exercise\n",
    "Write the SMILES and display a table of chemical structures for the following. \n",
    "1. 1,2-dimethylcyclopropane\n",
    "2. 1-methyl-3,3-dimethylcyclohexane\n",
    "3. piperazine\n",
    "4. hydrindane\n",
    "5. norbornane\n",
    "6. cyclopentanol"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "7cda01de",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.898517Z",
     "start_time": "2025-05-05T16:57:14.897085Z"
    }
   },
   "outputs": [],
   "source": [
    "#Write your code here"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4f88ea34",
   "metadata": {},
   "source": [
    "### Aromaticity\n",
    "\n",
    "Aromatic atoms are indicated by lower case characters. According to Daylight C,N,P,O,S,As, and Se can be considered aromatic.  As an example, benzene can be expressed as c1ccccc1 and pyridine as c1ccccn1. Note that in the same way there are implicit single bonds between uppercase characters (e.g. CCC) there are implicit aromatic bonds between lowercase characters. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "02a51c8d",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.905888Z",
     "start_time": "2025-05-05T16:57:14.902410Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:rdkit=\"http://www.rdkit.org/xml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" baseProfile=\"full\" xml:space=\"preserve\" width=\"800px\" height=\"200px\" viewBox=\"0 0 800 200\">\n",
       "<!-- END OF HEADER -->\n",
       "<rect style=\"opacity:1.0;fill:#FFFFFF;stroke:none\" width=\"200.0\" height=\"200.0\" x=\"0.0\" y=\"0.0\"> </rect>\n",
       "<path class=\"bond-0 atom-0 atom-1\" d=\"M 29.8,131.5 L 29.9,50.5\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-0 atom-0 atom-1\" d=\"M 42.0,124.4 L 42.0,57.5\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-1 atom-1 atom-2\" d=\"M 29.9,50.5 L 100.1,10.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-2 atom-2 atom-3\" d=\"M 100.1,10.0 L 170.2,50.5\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-2 atom-2 atom-3\" d=\"M 100.1,24.0 L 158.0,57.6\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-3 atom-3 atom-4\" d=\"M 170.2,50.5 L 170.1,131.5\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-4 atom-4 atom-5\" d=\"M 170.1,131.5 L 99.9,172.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-4 atom-4 atom-5\" d=\"M 158.0,124.5 L 99.9,158.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-5 atom-5 atom-0\" d=\"M 99.9,172.0 L 29.8,131.5\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path d=\"M 29.8,127.4 L 29.8,131.5 L 33.3,133.5\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 29.9,54.5 L 29.9,50.5 L 33.4,48.4\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 96.6,12.0 L 100.1,10.0 L 103.6,12.0\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 166.7,48.5 L 170.2,50.5 L 170.2,54.6\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 170.1,127.5 L 170.1,131.5 L 166.6,133.6\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 103.4,170.0 L 99.9,172.0 L 96.4,170.0\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path class=\"legend\" d=\"M 74.4 181.5 Q 76.1 181.5, 77.1 182.6 Q 78.0 183.6, 78.0 185.6 Q 78.0 187.7, 76.9 188.8 Q 75.8 190.0, 73.8 190.0 Q 72.5 190.0, 71.3 189.5 L 70.6 189.3 L 70.6 177.7 L 72.1 177.7 L 72.1 182.5 Q 73.0 181.5, 74.4 181.5 M 73.8 188.8 Q 75.1 188.8, 75.8 188.0 Q 76.5 187.1, 76.5 185.6 Q 76.5 184.2, 75.9 183.5 Q 75.4 182.7, 74.3 182.7 Q 73.5 182.7, 72.9 183.1 Q 72.3 183.6, 72.1 184.4 L 72.1 188.6 Q 72.9 188.8, 73.8 188.8 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 79.5 185.7 Q 79.5 183.7, 80.5 182.6 Q 81.5 181.5, 83.3 181.5 Q 85.2 181.5, 86.0 182.6 Q 86.8 183.7, 86.8 185.7 L 86.8 186.0 L 81.0 186.0 Q 81.1 187.3, 81.7 188.1 Q 82.3 188.8, 83.5 188.8 Q 84.1 188.8, 84.7 188.7 Q 85.3 188.5, 86.0 188.2 L 86.4 189.2 Q 85.6 189.6, 84.9 189.8 Q 84.2 190.0, 83.4 190.0 Q 81.5 190.0, 80.5 188.9 Q 79.5 187.8, 79.5 185.7 M 83.3 182.7 Q 82.4 182.7, 81.8 183.2 Q 81.3 183.8, 81.1 184.8 L 85.2 184.8 Q 85.1 183.7, 84.6 183.2 Q 84.2 182.7, 83.3 182.7 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 92.4 181.5 Q 93.7 181.5, 94.4 182.3 Q 95.1 183.0, 95.1 184.4 L 95.1 189.9 L 93.6 189.9 L 93.6 184.5 Q 93.6 183.6, 93.2 183.1 Q 92.8 182.7, 92.0 182.7 Q 91.2 182.7, 90.6 183.0 Q 90.0 183.4, 89.6 184.0 L 89.6 189.9 L 88.1 189.9 L 88.1 181.6 L 89.3 181.6 L 89.5 182.8 Q 90.6 181.5, 92.4 181.5 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 98.8 188.7 L 103.3 188.7 L 103.3 189.9 L 97.0 189.9 L 97.0 188.9 L 101.3 182.8 L 97.2 182.8 L 97.2 181.6 L 103.2 181.6 L 103.2 182.6 L 98.8 188.7 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 104.6 185.7 Q 104.6 183.7, 105.6 182.6 Q 106.6 181.5, 108.5 181.5 Q 110.3 181.5, 111.1 182.6 Q 111.9 183.7, 111.9 185.7 L 111.9 186.0 L 106.1 186.0 Q 106.2 187.3, 106.8 188.1 Q 107.4 188.8, 108.6 188.8 Q 109.2 188.8, 109.8 188.7 Q 110.4 188.5, 111.1 188.2 L 111.6 189.2 Q 110.7 189.6, 110.0 189.8 Q 109.3 190.0, 108.5 190.0 Q 106.7 190.0, 105.6 188.9 Q 104.6 187.8, 104.6 185.7 M 108.5 182.7 Q 107.5 182.7, 106.9 183.2 Q 106.4 183.8, 106.2 184.8 L 110.3 184.8 Q 110.2 183.7, 109.7 183.2 Q 109.3 182.7, 108.5 182.7 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 117.5 181.5 Q 118.8 181.5, 119.5 182.3 Q 120.2 183.0, 120.2 184.4 L 120.2 189.9 L 118.7 189.9 L 118.7 184.5 Q 118.7 183.6, 118.3 183.1 Q 117.9 182.7, 117.1 182.7 Q 116.4 182.7, 115.7 183.0 Q 115.1 183.4, 114.7 184.0 L 114.7 189.9 L 113.2 189.9 L 113.2 181.6 L 114.4 181.6 L 114.6 182.8 Q 115.7 181.5, 117.5 181.5 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 122.1 185.7 Q 122.1 183.7, 123.1 182.6 Q 124.1 181.5, 126.0 181.5 Q 127.8 181.5, 128.6 182.6 Q 129.4 183.7, 129.4 185.7 L 129.4 186.0 L 123.7 186.0 Q 123.7 187.3, 124.3 188.1 Q 124.9 188.8, 126.1 188.8 Q 126.8 188.8, 127.3 188.7 Q 127.9 188.5, 128.7 188.2 L 129.1 189.2 Q 128.3 189.6, 127.5 189.8 Q 126.8 190.0, 126.0 190.0 Q 124.2 190.0, 123.2 188.9 Q 122.1 187.8, 122.1 185.7 M 126.0 182.7 Q 125.0 182.7, 124.5 183.2 Q 123.9 183.8, 123.7 184.8 L 127.8 184.8 Q 127.7 183.7, 127.3 183.2 Q 126.8 182.7, 126.0 182.7 \" fill=\"#000000\"/>\n",
       "<path class=\"bond-0 atom-0 atom-1\" d=\"M 305.3,172.0 L 375.5,131.5\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-0 atom-0 atom-1\" d=\"M 305.3,158.0 L 363.3,124.5\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-1 atom-1 atom-2\" d=\"M 375.5,131.5 L 375.5,50.5\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-2 atom-2 atom-3\" d=\"M 375.5,50.5 L 305.4,10.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-2 atom-2 atom-3\" d=\"M 363.4,57.6 L 305.4,24.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-3 atom-3 atom-4\" d=\"M 305.4,10.0 L 235.3,50.5\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-4 atom-4 atom-5\" d=\"M 235.3,50.5 L 235.2,82.5\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-4 atom-4 atom-5\" d=\"M 235.2,82.5 L 235.2,114.6\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-4 atom-4 atom-5\" d=\"M 247.4,57.5 L 247.4,86.1\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-4 atom-4 atom-5\" d=\"M 247.4,86.1 L 247.4,114.6\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-5 atom-5 atom-0\" d=\"M 248.6,139.2 L 277.0,155.6\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-5 atom-5 atom-0\" d=\"M 277.0,155.6 L 305.3,172.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path d=\"M 308.8,170.0 L 305.3,172.0 L 303.9,171.2\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 372.0,133.6 L 375.5,131.5 L 375.5,127.5\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 375.5,54.6 L 375.5,50.5 L 372.0,48.5\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 308.9,12.0 L 305.4,10.0 L 301.9,12.0\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 238.8,48.4 L 235.3,50.5 L 235.3,52.1\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path class=\"atom-5\" d=\"M 228.9 117.3 L 238.2 132.3 Q 239.1 133.8, 240.6 136.5 Q 242.1 139.1, 242.2 139.3 L 242.2 117.3 L 245.9 117.3 L 245.9 145.6 L 242.1 145.6 L 232.1 129.2 Q 230.9 127.3, 229.7 125.1 Q 228.5 122.9, 228.1 122.2 L 228.1 145.6 L 224.5 145.6 L 224.5 117.3 L 228.9 117.3 \" fill=\"#0000FF\"/>\n",
       "<path class=\"legend\" d=\"M 276.4 177.7 Q 278.1 177.7, 279.0 178.8 Q 280.0 179.8, 280.0 181.8 Q 280.0 183.9, 278.8 185.0 Q 277.7 186.2, 275.8 186.2 Q 274.8 186.2, 274.0 186.0 L 274.0 190.0 L 272.5 190.0 L 272.5 177.8 L 273.8 177.8 L 273.9 178.8 Q 274.4 178.3, 275.0 178.0 Q 275.6 177.7, 276.4 177.7 M 275.7 185.0 Q 277.0 185.0, 277.7 184.2 Q 278.4 183.3, 278.4 181.8 Q 278.4 180.4, 277.9 179.6 Q 277.3 178.9, 276.3 178.9 Q 275.4 178.9, 274.9 179.3 Q 274.3 179.7, 274.0 180.5 L 274.0 184.8 Q 274.9 185.0, 275.7 185.0 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 287.6 177.8 L 289.0 177.8 L 284.8 190.0 L 283.4 190.0 L 284.8 186.1 L 284.2 186.1 L 281.3 177.8 L 282.8 177.8 L 285.2 184.8 L 287.6 177.8 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 291.0 177.8 L 291.2 179.0 Q 292.0 177.7, 293.4 177.7 Q 293.9 177.7, 294.5 177.9 L 294.2 179.2 Q 293.6 179.0, 293.2 179.0 Q 292.5 179.0, 292.1 179.3 Q 291.6 179.6, 291.3 180.2 L 291.3 186.1 L 289.8 186.1 L 289.8 177.8 L 291.0 177.8 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 295.3 174.7 L 296.8 174.7 L 296.8 176.1 L 295.3 176.1 L 295.3 174.7 M 295.3 177.8 L 296.8 177.8 L 296.8 186.1 L 295.3 186.1 L 295.3 177.8 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 306.2 173.9 L 306.2 186.0 L 304.9 186.0 L 304.7 185.0 Q 303.8 186.2, 302.3 186.2 Q 300.6 186.2, 299.6 185.1 Q 298.7 184.1, 298.7 182.1 Q 298.7 180.0, 299.8 178.9 Q 300.9 177.7, 302.9 177.7 Q 303.8 177.7, 304.7 177.9 L 304.7 173.9 L 306.2 173.9 M 302.4 185.0 Q 303.2 185.0, 303.8 184.6 Q 304.4 184.1, 304.7 183.3 L 304.7 179.1 Q 303.8 178.9, 302.9 178.9 Q 301.7 178.9, 300.9 179.7 Q 300.2 180.6, 300.2 182.1 Q 300.2 183.5, 300.8 184.3 Q 301.4 185.0, 302.4 185.0 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 308.0 174.7 L 309.5 174.7 L 309.5 176.1 L 308.0 176.1 L 308.0 174.7 M 308.0 177.8 L 309.5 177.8 L 309.5 186.1 L 308.0 186.1 L 308.0 177.8 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 315.7 177.7 Q 317.0 177.7, 317.7 178.4 Q 318.4 179.2, 318.4 180.6 L 318.4 186.1 L 316.9 186.1 L 316.9 180.7 Q 316.9 179.8, 316.5 179.3 Q 316.1 178.9, 315.3 178.9 Q 314.6 178.9, 313.9 179.2 Q 313.3 179.6, 312.9 180.2 L 312.9 186.1 L 311.4 186.1 L 311.4 177.8 L 312.6 177.8 L 312.8 179.0 Q 313.9 177.7, 315.7 177.7 \" fill=\"#000000\"/>\n",
       "<path class=\"legend\" d=\"M 320.2 181.9 Q 320.2 179.9, 321.2 178.8 Q 322.2 177.7, 324.0 177.7 Q 325.8 177.7, 326.6 178.8 Q 327.5 179.9, 327.5 181.9 L 327.5 182.1 L 321.7 182.1 Q 321.8 183.5, 322.4 184.3 Q 323.0 185.0, 324.2 185.0 Q 324.8 185.0, 325.4 184.9 Q 326.0 184.7, 326.7 184.4 L 327.1 185.4 Q 326.3 185.8, 325.6 186.0 Q 324.9 186.2, 324.1 186.2 Q 322.2 186.2, 321.2 185.1 Q 320.2 184.0, 320.2 181.9 M 324.0 178.9 Q 323.1 178.9, 322.5 179.4 Q 322.0 180.0, 321.8 181.0 L 325.9 181.0 Q 325.8 179.9, 325.3 179.4 Q 324.9 178.9, 324.0 178.9 \" fill=\"#000000\"/>\n",
       "</svg>"
      ],
      "text/plain": [
       "<IPython.core.display.SVG object>"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# define a text buffer for our examples\n",
    "examples = \"\"\"c1ccccc1 benzene\n",
    "c1ccccn1 pyridine\"\"\"\n",
    "aromatic_smiles_list = [x.split(\" \",1) for x in examples.split(\"\\n\")]\n",
    "display_structures(aromatic_smiles_list)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0d71f22a",
   "metadata": {},
   "source": [
    "When an aromatic nitrogen has an attached hydrogen, this hydrogen must be explicitly specified. Note that if we don't specify an explicit hydrogen on the nitrogen in pyrrole, we get an error. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "04c442b2",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.917891Z",
     "start_time": "2025-05-05T16:57:14.915331Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[12:57:14] Can't kekulize mol.  Unkekulized atoms: 0 1 2 3 4\n"
     ]
    }
   ],
   "source": [
    "mol = Chem.MolFromSmiles(\"c1cccn1\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a81fcecd",
   "metadata": {},
   "source": [
    "If we include the attached hydrogen, the valid SMILES is processed. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "c9aba132",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.935593Z",
     "start_time": "2025-05-05T16:57:14.930212Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "image/svg+xml": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 254.2,109.6 L 135.8,42.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 231.1,120.0 L 138.6,67.2' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 135.8,42.1 L 35.0,133.8' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-2 atom-3' d='M 35.0,133.8 L 91.1,257.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-2 atom-3' d='M 59.8,138.9 L 103.6,236.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-3 atom-3 atom-4' d='M 91.1,257.9 L 151.2,251.3' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-3 atom-3 atom-4' d='M 151.2,251.3 L 211.3,244.7' style='fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-4 atom-4 atom-0' d='M 230.4,224.3 L 242.3,166.9' style='fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-4 atom-4 atom-0' d='M 242.3,166.9 L 254.2,109.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 248.2,106.2 L 254.2,109.6 L 253.6,112.4' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 141.7,45.4 L 135.8,42.1 L 130.8,46.6' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 40.1,129.2 L 35.0,133.8 L 37.8,140.0' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 88.3,251.7 L 91.1,257.9 L 94.1,257.6' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path class='atom-4' d='M 220.3 228.8\n",
       "L 229.6 243.8\n",
       "Q 230.5 245.3, 232.0 248.0\n",
       "Q 233.5 250.7, 233.5 250.8\n",
       "L 233.5 228.8\n",
       "L 237.3 228.8\n",
       "L 237.3 257.1\n",
       "L 233.4 257.1\n",
       "L 223.5 240.7\n",
       "Q 222.3 238.8, 221.1 236.6\n",
       "Q 219.9 234.4, 219.5 233.7\n",
       "L 219.5 257.1\n",
       "L 215.8 257.1\n",
       "L 215.8 228.8\n",
       "L 220.3 228.8\n",
       "' fill='#0000FF'/>\n",
       "<path class='atom-4' d='M 242.8 228.8\n",
       "L 246.6 228.8\n",
       "L 246.6 240.9\n",
       "L 261.1 240.9\n",
       "L 261.1 228.8\n",
       "L 265.0 228.8\n",
       "L 265.0 257.1\n",
       "L 261.1 257.1\n",
       "L 261.1 244.1\n",
       "L 246.6 244.1\n",
       "L 246.6 257.1\n",
       "L 242.8 257.1\n",
       "L 242.8 228.8\n",
       "' fill='#0000FF'/>\n",
       "</svg>\n"
      ],
      "text/html": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 254.2,109.6 L 135.8,42.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 231.1,120.0 L 138.6,67.2' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 135.8,42.1 L 35.0,133.8' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-2 atom-3' d='M 35.0,133.8 L 91.1,257.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-2 atom-3' d='M 59.8,138.9 L 103.6,236.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-3 atom-3 atom-4' d='M 91.1,257.9 L 151.2,251.3' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-3 atom-3 atom-4' d='M 151.2,251.3 L 211.3,244.7' style='fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-4 atom-4 atom-0' d='M 230.4,224.3 L 242.3,166.9' style='fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-4 atom-4 atom-0' d='M 242.3,166.9 L 254.2,109.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 248.2,106.2 L 254.2,109.6 L 253.6,112.4' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 141.7,45.4 L 135.8,42.1 L 130.8,46.6' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 40.1,129.2 L 35.0,133.8 L 37.8,140.0' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 88.3,251.7 L 91.1,257.9 L 94.1,257.6' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path class='atom-4' d='M 220.3 228.8\n",
       "L 229.6 243.8\n",
       "Q 230.5 245.3, 232.0 248.0\n",
       "Q 233.5 250.7, 233.5 250.8\n",
       "L 233.5 228.8\n",
       "L 237.3 228.8\n",
       "L 237.3 257.1\n",
       "L 233.4 257.1\n",
       "L 223.5 240.7\n",
       "Q 222.3 238.8, 221.1 236.6\n",
       "Q 219.9 234.4, 219.5 233.7\n",
       "L 219.5 257.1\n",
       "L 215.8 257.1\n",
       "L 215.8 228.8\n",
       "L 220.3 228.8\n",
       "' fill='#0000FF'/>\n",
       "<path class='atom-4' d='M 242.8 228.8\n",
       "L 246.6 228.8\n",
       "L 246.6 240.9\n",
       "L 261.1 240.9\n",
       "L 261.1 228.8\n",
       "L 265.0 228.8\n",
       "L 265.0 257.1\n",
       "L 261.1 257.1\n",
       "L 261.1 244.1\n",
       "L 246.6 244.1\n",
       "L 246.6 257.1\n",
       "L 242.8 257.1\n",
       "L 242.8 228.8\n",
       "' fill='#0000FF'/>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<rdkit.Chem.rdchem.Mol at 0x34afad690>"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mol = Chem.MolFromSmiles(\"c1ccc[nH]1\")\n",
    "mol"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c0fdcb1b",
   "metadata": {},
   "source": [
    "We also need to include explicit hydrogens when we have an aromatic carbon with a charge.  For instance, we must include an explicit hydrogen on the anionic carbon in cyclopentadienyl anion. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "356a3038",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.948366Z",
     "start_time": "2025-05-05T16:57:14.943415Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "image/svg+xml": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 220.5,243.6 L 84.2,258.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 203.4,224.8 L 96.8,236.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 84.2,258.6 L 27.7,133.7' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-2 atom-3' d='M 27.7,133.7 L 129.1,41.4' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-2 atom-3' d='M 52.6,138.8 L 131.9,66.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-3 atom-3 atom-4' d='M 129.1,41.4 L 232.8,100.5' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-4 atom-4 atom-0' d='M 244.3,128.5 L 220.5,243.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 213.7,244.3 L 220.5,243.6 L 221.7,237.8' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 91.0,257.9 L 84.2,258.6 L 81.3,252.4' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 30.5,139.9 L 27.7,133.7 L 32.8,129.0' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 124.1,46.0 L 129.1,41.4 L 134.3,44.3' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path class='atom-4' d='M 237.3 109.4\n",
       "Q 237.3 102.4, 240.6 98.7\n",
       "Q 243.9 95.0, 250.2 95.0\n",
       "Q 256.1 95.0, 259.2 99.1\n",
       "L 256.5 101.3\n",
       "Q 254.3 98.3, 250.2 98.3\n",
       "Q 245.9 98.3, 243.7 101.1\n",
       "Q 241.4 104.0, 241.4 109.4\n",
       "Q 241.4 115.0, 243.7 117.9\n",
       "Q 246.1 120.8, 250.7 120.8\n",
       "Q 253.8 120.8, 257.4 118.9\n",
       "L 258.5 121.9\n",
       "Q 257.1 122.9, 254.8 123.4\n",
       "Q 252.6 124.0, 250.1 124.0\n",
       "Q 243.9 124.0, 240.6 120.2\n",
       "Q 237.3 116.5, 237.3 109.4\n",
       "' fill='#000000'/>\n",
       "<path class='atom-4' d='M 262.6 99.6\n",
       "L 272.3 99.6\n",
       "L 272.3 101.7\n",
       "L 262.6 101.7\n",
       "L 262.6 99.6\n",
       "' fill='#000000'/>\n",
       "</svg>\n"
      ],
      "text/html": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 220.5,243.6 L 84.2,258.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 203.4,224.8 L 96.8,236.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 84.2,258.6 L 27.7,133.7' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-2 atom-3' d='M 27.7,133.7 L 129.1,41.4' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-2 atom-3' d='M 52.6,138.8 L 131.9,66.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-3 atom-3 atom-4' d='M 129.1,41.4 L 232.8,100.5' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-4 atom-4 atom-0' d='M 244.3,128.5 L 220.5,243.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 213.7,244.3 L 220.5,243.6 L 221.7,237.8' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 91.0,257.9 L 84.2,258.6 L 81.3,252.4' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 30.5,139.9 L 27.7,133.7 L 32.8,129.0' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 124.1,46.0 L 129.1,41.4 L 134.3,44.3' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path class='atom-4' d='M 237.3 109.4\n",
       "Q 237.3 102.4, 240.6 98.7\n",
       "Q 243.9 95.0, 250.2 95.0\n",
       "Q 256.1 95.0, 259.2 99.1\n",
       "L 256.5 101.3\n",
       "Q 254.3 98.3, 250.2 98.3\n",
       "Q 245.9 98.3, 243.7 101.1\n",
       "Q 241.4 104.0, 241.4 109.4\n",
       "Q 241.4 115.0, 243.7 117.9\n",
       "Q 246.1 120.8, 250.7 120.8\n",
       "Q 253.8 120.8, 257.4 118.9\n",
       "L 258.5 121.9\n",
       "Q 257.1 122.9, 254.8 123.4\n",
       "Q 252.6 124.0, 250.1 124.0\n",
       "Q 243.9 124.0, 240.6 120.2\n",
       "Q 237.3 116.5, 237.3 109.4\n",
       "' fill='#000000'/>\n",
       "<path class='atom-4' d='M 262.6 99.6\n",
       "L 272.3 99.6\n",
       "L 272.3 101.7\n",
       "L 262.6 101.7\n",
       "L 262.6 99.6\n",
       "' fill='#000000'/>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<rdkit.Chem.rdchem.Mol at 0x34afad7e0>"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mol = Chem.MolFromSmiles(\"c1ccc[cH-]1\")\n",
    "mol"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "62fac59b",
   "metadata": {},
   "source": [
    "### Exercise\n",
    "\n",
    "Write the SMILES and display a table of chemical structures for the following.\n",
    "\n",
    "1. furan\n",
    "2. benzimidazole\n",
    "3. toluene\n",
    "4. indole\n",
    "5. tropyllium cation\n",
    "6. napthalene"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "47ee8466",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.956383Z",
     "start_time": "2025-05-05T16:57:14.955056Z"
    }
   },
   "outputs": [],
   "source": [
    "#Write your code here"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9d89dc1d",
   "metadata": {},
   "source": [
    "### Stereochemistry\n",
    "\n",
    "In SMILES, tetrahedral stereochemistry is indicated by \"@\" indicating anticlockwise and \"@@\" indicating clockwise. Quoting from the Daylight SMILES tutorial. \n",
    "<pre>\n",
    "Looking FROM the 1st neighbor listed in the SMILES TO the chiral atom, the other three neighbors appear anticlockwise or clockwise in the order listed.\n",
    "</pre>\n",
    "Also, note that a chiral atom will be listed in square brackets and any attached hydrogens must be explicitly specified. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "3071e8ce",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.966401Z",
     "start_time": "2025-05-05T16:57:14.960620Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "image/svg+xml": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 141.1,184.3 L 140.8,183.8' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 138.2,186.3 L 137.6,185.4' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 135.3,188.2 L 134.5,186.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 132.4,190.2 L 131.3,188.4' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 129.5,192.2 L 128.1,189.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 126.5,194.1 L 125.0,191.4' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 123.6,196.1 L 121.8,192.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 120.7,198.1 L 118.7,194.4' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 117.8,200.0 L 115.5,195.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 114.9,202.0 L 112.3,197.4' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 112.0,204.0 L 109.2,198.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 109.1,205.9 L 106.0,200.5' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 106.2,207.9 L 102.8,202.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 103.3,209.9 L 99.7,203.5' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 100.4,211.8 L 96.5,205.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 97.5,213.8 L 93.3,206.5' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 94.6,215.7 L 90.2,208.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 91.7,217.7 L 87.0,209.5' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 88.8,219.7 L 83.8,211.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 85.9,221.6 L 80.7,212.5' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 83.0,223.6 L 77.5,214.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 80.1,225.6 L 74.3,215.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 77.2,227.5 L 71.2,217.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 74.3,229.5 L 68.0,218.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 71.4,231.5 L 64.8,220.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 68.4,233.4 L 61.7,221.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 65.5,235.4 L 58.5,223.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 62.6,237.4 L 55.3,224.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 59.7,239.3 L 52.2,226.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 56.8,241.3 L 49.0,227.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 53.9,243.3 L 45.8,229.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 51.0,245.2 L 42.7,230.7' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 48.1,247.2 L 39.5,232.2' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 45.2,249.2 L 36.3,233.7' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 42.3,251.1 L 33.2,235.2' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 39.4,253.1 L 30.0,236.7' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 36.5,255.1 L 26.8,238.2' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 33.6,257.0 L 23.7,239.7' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-0 atom-2' d='M 144.0,182.3 L 193.8,211.3' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-0 atom-2' d='M 193.8,211.3 L 243.5,240.3' style='fill:none;fill-rule:evenodd;stroke:#00CC00;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-0 atom-3' d='M 144.0,182.3 L 144.2,125.2' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-0 atom-3' d='M 144.2,125.2 L 144.4,68.0' style='fill:none;fill-rule:evenodd;stroke:#7F4C19;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 146.5,183.8 L 144.0,182.3 L 144.0,179.5' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path class='atom-2' d='M 247.9 250.2\n",
       "Q 247.9 243.1, 251.2 239.5\n",
       "Q 254.5 235.7, 260.8 235.7\n",
       "Q 266.6 235.7, 269.8 239.9\n",
       "L 267.1 242.0\n",
       "Q 264.8 239.0, 260.8 239.0\n",
       "Q 256.5 239.0, 254.2 241.9\n",
       "Q 252.0 244.7, 252.0 250.2\n",
       "Q 252.0 255.8, 254.3 258.7\n",
       "Q 256.7 261.5, 261.2 261.5\n",
       "Q 264.4 261.5, 268.0 259.7\n",
       "L 269.1 262.7\n",
       "Q 267.6 263.6, 265.4 264.2\n",
       "Q 263.2 264.7, 260.7 264.7\n",
       "Q 254.5 264.7, 251.2 261.0\n",
       "Q 247.9 257.2, 247.9 250.2\n",
       "' fill='#00CC00'/>\n",
       "<path class='atom-2' d='M 272.6 234.0\n",
       "L 276.3 234.0\n",
       "L 276.3 264.4\n",
       "L 272.6 264.4\n",
       "L 272.6 234.0\n",
       "' fill='#00CC00'/>\n",
       "<path class='atom-3' d='M 148.6 48.7\n",
       "Q 151.3 49.5, 152.7 51.1\n",
       "Q 154.1 52.8, 154.1 55.2\n",
       "Q 154.1 59.1, 151.6 61.4\n",
       "Q 149.1 63.6, 144.4 63.6\n",
       "L 134.8 63.6\n",
       "L 134.8 35.3\n",
       "L 143.2 35.3\n",
       "Q 148.0 35.3, 150.5 37.2\n",
       "Q 152.9 39.2, 152.9 42.8\n",
       "Q 152.9 47.1, 148.6 48.7\n",
       "M 138.6 38.5\n",
       "L 138.6 47.3\n",
       "L 143.2 47.3\n",
       "Q 146.0 47.3, 147.4 46.2\n",
       "Q 148.9 45.1, 148.9 42.8\n",
       "Q 148.9 38.5, 143.2 38.5\n",
       "L 138.6 38.5\n",
       "M 144.4 60.4\n",
       "Q 147.1 60.4, 148.6 59.1\n",
       "Q 150.1 57.7, 150.1 55.2\n",
       "Q 150.1 52.9, 148.4 51.7\n",
       "Q 146.8 50.5, 143.8 50.5\n",
       "L 138.6 50.5\n",
       "L 138.6 60.4\n",
       "L 144.4 60.4\n",
       "' fill='#7F4C19'/>\n",
       "<path class='atom-3' d='M 160.5 43.0\n",
       "L 160.9 45.9\n",
       "Q 163.1 42.7, 166.6 42.7\n",
       "Q 167.7 42.7, 169.3 43.1\n",
       "L 168.7 46.4\n",
       "Q 166.9 46.0, 166.0 46.0\n",
       "Q 164.3 46.0, 163.2 46.7\n",
       "Q 162.1 47.3, 161.2 48.9\n",
       "L 161.2 63.6\n",
       "L 157.5 63.6\n",
       "L 157.5 43.0\n",
       "L 160.5 43.0\n",
       "' fill='#7F4C19'/>\n",
       "</svg>\n"
      ],
      "text/html": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 141.1,184.3 L 140.8,183.8' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 138.2,186.3 L 137.6,185.4' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 135.3,188.2 L 134.5,186.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 132.4,190.2 L 131.3,188.4' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 129.5,192.2 L 128.1,189.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 126.5,194.1 L 125.0,191.4' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 123.6,196.1 L 121.8,192.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 120.7,198.1 L 118.7,194.4' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 117.8,200.0 L 115.5,195.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 114.9,202.0 L 112.3,197.4' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 112.0,204.0 L 109.2,198.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 109.1,205.9 L 106.0,200.5' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 106.2,207.9 L 102.8,202.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 103.3,209.9 L 99.7,203.5' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 100.4,211.8 L 96.5,205.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 97.5,213.8 L 93.3,206.5' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 94.6,215.7 L 90.2,208.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 91.7,217.7 L 87.0,209.5' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 88.8,219.7 L 83.8,211.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 85.9,221.6 L 80.7,212.5' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 83.0,223.6 L 77.5,214.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 80.1,225.6 L 74.3,215.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 77.2,227.5 L 71.2,217.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 74.3,229.5 L 68.0,218.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 71.4,231.5 L 64.8,220.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 68.4,233.4 L 61.7,221.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 65.5,235.4 L 58.5,223.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 62.6,237.4 L 55.3,224.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 59.7,239.3 L 52.2,226.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 56.8,241.3 L 49.0,227.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 53.9,243.3 L 45.8,229.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 51.0,245.2 L 42.7,230.7' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 48.1,247.2 L 39.5,232.2' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 45.2,249.2 L 36.3,233.7' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 42.3,251.1 L 33.2,235.2' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 39.4,253.1 L 30.0,236.7' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 36.5,255.1 L 26.8,238.2' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 33.6,257.0 L 23.7,239.7' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-0 atom-2' d='M 144.0,182.3 L 193.8,211.3' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-0 atom-2' d='M 193.8,211.3 L 243.5,240.3' style='fill:none;fill-rule:evenodd;stroke:#00CC00;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-0 atom-3' d='M 144.0,182.3 L 144.2,125.2' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-0 atom-3' d='M 144.2,125.2 L 144.4,68.0' style='fill:none;fill-rule:evenodd;stroke:#7F4C19;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 146.5,183.8 L 144.0,182.3 L 144.0,179.5' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path class='atom-2' d='M 247.9 250.2\n",
       "Q 247.9 243.1, 251.2 239.5\n",
       "Q 254.5 235.7, 260.8 235.7\n",
       "Q 266.6 235.7, 269.8 239.9\n",
       "L 267.1 242.0\n",
       "Q 264.8 239.0, 260.8 239.0\n",
       "Q 256.5 239.0, 254.2 241.9\n",
       "Q 252.0 244.7, 252.0 250.2\n",
       "Q 252.0 255.8, 254.3 258.7\n",
       "Q 256.7 261.5, 261.2 261.5\n",
       "Q 264.4 261.5, 268.0 259.7\n",
       "L 269.1 262.7\n",
       "Q 267.6 263.6, 265.4 264.2\n",
       "Q 263.2 264.7, 260.7 264.7\n",
       "Q 254.5 264.7, 251.2 261.0\n",
       "Q 247.9 257.2, 247.9 250.2\n",
       "' fill='#00CC00'/>\n",
       "<path class='atom-2' d='M 272.6 234.0\n",
       "L 276.3 234.0\n",
       "L 276.3 264.4\n",
       "L 272.6 264.4\n",
       "L 272.6 234.0\n",
       "' fill='#00CC00'/>\n",
       "<path class='atom-3' d='M 148.6 48.7\n",
       "Q 151.3 49.5, 152.7 51.1\n",
       "Q 154.1 52.8, 154.1 55.2\n",
       "Q 154.1 59.1, 151.6 61.4\n",
       "Q 149.1 63.6, 144.4 63.6\n",
       "L 134.8 63.6\n",
       "L 134.8 35.3\n",
       "L 143.2 35.3\n",
       "Q 148.0 35.3, 150.5 37.2\n",
       "Q 152.9 39.2, 152.9 42.8\n",
       "Q 152.9 47.1, 148.6 48.7\n",
       "M 138.6 38.5\n",
       "L 138.6 47.3\n",
       "L 143.2 47.3\n",
       "Q 146.0 47.3, 147.4 46.2\n",
       "Q 148.9 45.1, 148.9 42.8\n",
       "Q 148.9 38.5, 143.2 38.5\n",
       "L 138.6 38.5\n",
       "M 144.4 60.4\n",
       "Q 147.1 60.4, 148.6 59.1\n",
       "Q 150.1 57.7, 150.1 55.2\n",
       "Q 150.1 52.9, 148.4 51.7\n",
       "Q 146.8 50.5, 143.8 50.5\n",
       "L 138.6 50.5\n",
       "L 138.6 60.4\n",
       "L 144.4 60.4\n",
       "' fill='#7F4C19'/>\n",
       "<path class='atom-3' d='M 160.5 43.0\n",
       "L 160.9 45.9\n",
       "Q 163.1 42.7, 166.6 42.7\n",
       "Q 167.7 42.7, 169.3 43.1\n",
       "L 168.7 46.4\n",
       "Q 166.9 46.0, 166.0 46.0\n",
       "Q 164.3 46.0, 163.2 46.7\n",
       "Q 162.1 47.3, 161.2 48.9\n",
       "L 161.2 63.6\n",
       "L 157.5 63.6\n",
       "L 157.5 43.0\n",
       "L 160.5 43.0\n",
       "' fill='#7F4C19'/>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<rdkit.Chem.rdchem.Mol at 0x34afadaf0>"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Chem.MolFromSmiles(\"[C@H](C)(Cl)(Br)\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "0e6e0bc1",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.975828Z",
     "start_time": "2025-05-05T16:57:14.970640Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAIAAAD2HxkiAAAABmJLR0QA/wD/AP+gvaeTAAAW30lEQVR4nO3de1RU9d7H8d8MlwEGkGsK3jAEBVESL5mklWLZ47WSsEdZVlZ2Mmmtc1pdrBPneTp51JZ5PRmUp4WXlY/2qIduKpklpo/ioKB4A0GF5DYQDLe5MHueP3ZnmsNNGPae3/x+83kt/xiGYfjW8u3es/ee3ygsFgsBAHqUtAcAcHWIEIAyRAhAGSIEoAwRAlCGCAEoQ4QAlCFCAMoQIQBliBCAMkQIQBkiBKAMEQJQhggBKEOEAJQhQgDKECEAZYgQgDJECEAZIgSgDBECUIYIAShDhACUIUIAyhAhAGWIEIAyRAhAGSIEoAwRAlCGCAEoQ4QAlCFCAMoQIQBliBCAMnfaA0BHjTUV2Vv/1OW3FAqlSu3v4xcYOmzUkFHjw6Puc/BsIAdE6HSMhtbSC7m9eWRQ+IgHF626LylFoVDIPRXIB7ujDKu/U5a95Y9733+23WigPQvYD1tCpzbo3ri4aQusX1qIpVVXr60ouVn4s8nQJt55PS/nq22vP/HHrZRmhP5ChE7tnuGjExet7Hy/oUV39PP384/sEb8sPP6/Ex9fNjRmomOnA2lgd5RJKrX/vFc/HD1ltvWeiz8eoDgP9AciZNikOc9Zb1dcz6c4CfQHdkcZFjz4Xuvt1sa6uz6+3WiouXW1qb7K00sdOjTKN2ignNNBbyFChrUb9dbbXr4DbL91LGvNyS+3EUImzXnuP17+wGwy/rT3o3Pf7Wpr+tX6mJe3HhsYEeOwaaE7iJBh5VfOWW8HD47s8jHaimJ9c+POP6dUlhTa3q90cw/p5kfAwfCakFWGFl3u/i3WL8ckzu3yYdry4v3rXupQICEkOPxeNw9PGeeDXsOWkD0Wi+XWxVOHP32v/k6ZeM/ICY/EdBNhU311U321Quk2YfbS+2YkBw4abm431f1yQxAEB44MPUGETu1W0f/tX7fC9p5WXX3t7estDbXWe2IfnLfgtY96uHJN6eaesnpH9ORZ1nv8ggfJMS3YBxE6tcaaisaaiu6+6+0XsOiNjHvvm9bzkzy46FXbAsHZ4DUhw9qaGv5nzfKcf7xvaNH18LCRE2Y4bCSwA7aETi102KjoyUm29xham1sb6+4UFzTUlBNCjG3Npw5uv3zqm9T//iIofASlMaFfEKFTC4scm7TsnS6/VX7l3OHMP98pKSCENFTf3p3+nys2H1X5+Dl2QJAAdkdZNTRm4nPrDg4ZNUH88teqW6cPZdIdCeyDCBnm7umV9Ozv28lLJw5SHAbshgjZNix2ktLtt9cUdXfKhHYT3XnADoiQbQqlm7uH6rcvLJb2diPVccAeiJBt+hadUd8i3nb39PL0UtOdB+yACNlWovnBevue4aMpTgJ2Q4QM0zc3Ht+93vplhzOKwApEyKqbF0/9440F9ZU3xS+91P6Tbd5oDwzByXqnVnFN8/Xf37C9x2wytTbVV5Ve0mkrf79XoZjzyjpvv0BHzwdSQIROrf5OmfX9St3xUHk/vuKvcdMX9PwwcFqIkGHunqq4aQsfTF5lu9gMMAcROh1v9YAJs5d29103dw8v9QBvv8CwyLiwkeO6OycxOHq89Ul8A0JkGRQkorBYLLRnAHBpODoKQBkiBKAMEQJQhghZkr3lT/81L/x8zhe0BwEpIUK2iEfR8JGgXEGELBEPZeNzeTmDCJmCDSGPECFLLMRCCFGgQr4gQqaIV1Zgd5QviJAleE3IJUTIFrwo5BAiZAm2hFxChEzBa0IeIUKWYEvIJUTIFrwm5BAiZAm2hFxChEzBG7B5hAgZhA0hXxAhS3DZGpcQIVNwioJHiJAlODDDJUTIFpyi4BAiZAm2hFxChEzBa0IeIUKWYEvIJUTIFrwm5BAiZAm2hFxChEzBhpBHiJAluGKGS4iQKTg6yiNECEAZImQJDsxwCRGyBUdmOIQIWYItIZcQIVNwYIZHiJAl2BJyCRGyBa8JOYQIWYItIZcQIVOwIeQRImQJLlvjEiJkCo6O8ggRsgSvCbmECNmCF4UcQoQswZaQS4gQgDJEyBQcmOERImQJdke5hAjZggMzHEKELMGWkEuIkCnYEPIIEbIEl61xCREyBUdHeYQIWYLXhFxChEyx4EUhhxAhS357TYgtIV8QIVPwmpBHiJAleE3IJUTIFgvtAUB6iJBF2BJyBRGyBLujXEKELDlyQ3mgWFXXKtAeBKTkTnsA6IMb5VUXr900C3hlyBVsCVmC3VEuIUKWIEIuIUKWIEIuIUKWIEIuIUKWIEIuIUKWIEIuIUKWIEIuIUKWIEIuIUKWIEIuIUIAyhAhS7Al5BIiZAki5BIiZAki5BIiZAki5BIiZAki5BIiZAki5BIiZAki5BIiZAki5BIiZAki5BIiZAki5BIiZAki5BIiZAki5BIiZAki5BIiBKAMEbIEW0IuIUKWIEIuIUKWIEIuIUKWIEIuIUKWIEIuIUKWIEIuIUKWIEIuIUKWIEIuIUKWIEIuIUKWIEIuIUKWIEIuIUKWIEIuIUKWiBECZxAhe7Al5AwiZAl2R7mECFmCCLmECFmCCLmECFmCCLmECFmCCLmECFmCCLmECFmCCLmECFmCCLmECFmCCLmECFmCCLmECAEoQ4TMwGaQV4iQGYiQV4gQgDJEyAyz2UzwlkIeIUJmIEJeIUJmCIIg3qipqaE7CUgLETLj5MmTnp6ehJDw8PCVK1dik8gNRMiAgwcPjh49ev369du3b1er1Waz+eOPP54+ffr58+dpjwZSsICzMpvNu3btSkhICAwM/PTTT8U729vbly9ffs899xBClEplampqVVUV3TmhnxChMzIajVu2bImPj/fz85s9e3ZNTU2HBzQ3N6enp6tUKkJIQEDA2rVrDQYDlVGh/xChc9Hr9Rs2bBg/frynp2dUVNS6det6ePD169fnzp0r7tFER0d/8803DpsTJIQInUVTU9M777wTFxfn5ubm5eU1ffr08vLy3vxgTk7OmDFjxBSTkpIuX74s96ggLURIX21t7YoVK0aOHClekjZ8+PA1a9b06RmMRuOmTZsGDBhACPHw8EhLS2tsbJRpWpAcIqSpqqpq5cqVUVFR4nZMpVJNnTr15s2b9j2bVqtNS0tzc3MjhISFhWVkZJjNZmkHBjkgQjpKSkqWLFkydOhQ62HqiIiI9PR0QRD6+cwajSYxMVF8zokTJ546dUqSgUE+iNDRCgoK5s+fP3DgQGt+4gbwypUrUv0KQRD27ds3bNgwQohCoUhNTa2srJTqyUFyiNBxzpw5M2fOnNDQUNvztIMHD3799dfl2G8UT2N4eXkRQtRqdXp6ul6vl/y3QP8hQkc4evTorFmzAgMDbfNzc3NLSEi4dOmSrL+6pKQkOTlZ/I1RUVH79u2T9deBHRChjARB2LNnzwMPPODn59fhQqXw8PBVq1a1t7c7ZpJjx47FxcVZT2PIXT70CSKUhdls3rlz5/333+/j49MhP3EDeObMGQePZDKZMjIyQkJCrKcxGhoaHDwDdAkRSsxgMGzcuDEhIUG8pqzzBnDFihUULzGrq6uznsYIDg7etGmTw7bG0B1EKJnm5ubVq1fHxMSIf8U7UCgUcXFxJ0+epD2mxWKx5OfnT5s2TRwsISHBSaZyWYhQAo2NjatXrx4zZoxS2fVbw0JCQpYvX+5sByezs7OHDx8u/gORnJx869Yt2hO5KETYL9XV1a+88kp0dHSX7Vk3gEeOHKE9addaWlqspzF8fHzS09Pb2tpoD+VyEKGdysrKlixZIp4Q705oaOgzzzzT3NxMe9i7KC8vT01NFWeOjIzEaQwHQ4R9dv369ZSUlPDw8B7yI4TExMSw9d6iH374Ydy4ceLwM2bMuHjxIu2JXAUi7IO8vLyFCxeK72rvQUBAQHJyclNTE+15+8xsNmdlZYnX9Li7u7/00ku1tbW0h+IfIuyVnJycpKSkoKCgnvMTN4AHDx6kPW+/1NfXp6Wlubu7E0KCgoJwGkNuiPAuDh8+/Mgjj4hv1bvrBnDu3Ln19fW0R5bGlStXHnvsMfE/bfz48SdOnKA9EbcQYdfERZamTJmiVqvvmh8hJDY2dteuXbSnll52dvaIESPE/8a5c+fa/V5H6AEi7MhoNPZwyUtnvr6+SUlJWq2W9uByaW1tXbt2ra+vL/nXaYzW1lbaQ3EFEf5Or9evWbMmNjZWfDnUG5GRkdbFCPlWUVGRmpoqLsAxZMiQrKws2hPxAxFaLBaLTqcTL3np8oqzLqnV6scee6zzYoR8+/HHH+Pj48X/Aw8//HBBQQHtiXjg6hHW1taKl7z06XP/7roYIcfE0xi2qw+72r9EknPdCCsrK1988cWIiIjet0cI6dNihByrr69ftWqVuN8eEhqy49aOdgGnMezkihEWFxcvXbp0yJAhfcqP2LUYId+uXr36+OOPJ/41kWjI6KLRhxsP056ISa4VYX5+fodFlnpJpVIlJibiAH2XDtUeGnFxBNEQoiHJpck3Dfi/1DeuEuHx48dnzpzZYZWXXoqIiHjzzTexhmcPDIJhU/Umvwt+REO8z3u/WfFmk5m9q/Zo4T/CI0eOzJo1KyAgwI78JF+MkG+/GH9JLUtVaBREQwYXDs6qyxIs/V1G1RVwG6HZbN69e/cDDzwgnmW2g3yLEfLtbMvZKVeniHun069Nv9B6gfZEzo7DCM1mc2ZmZnx8fC8veelMXIsJ7+Wxm2ARsuqyBhYOJBqi1ChTy1KrTdW0h3JeXEVoMBisnytmX37E4YsRcqzJ3JR+J12VryIaEnAhYG3VWoOAD1HsAicRNjU1vfvuu+LnitmdH63FCPl2TX9tTskcce90VNGobxu/pT2R02E+Qq1W+/LLL48YMaJPl7x0FhYWRncxQr7l6HJiimLEFOeWzL2hv0F7IifCcITV1dW2nytmN6dajJBjRsG4qXqT/wV/oiGe+Z5p5Wm6dh3toZwCkxGWlpZ2+Fwxu4WGhjrhYoQcu2O889Ktl5QaJdGQ8MJwnMawMBdh588V688GcOzYsU67GCHf8lrypl6dKu6dTroy6XTzadoT0cRMhGfPnl24cGGHzxWzW2ho6OLFi51/MUKOiacxBhUOIhqi0ChSy1KrjFW0h6KDgQiPHj2alJRk3xVnXWJuMUKONZubracxfM/7pt9J1wsu99LAeSMUBGHv3r39ueSlM3YXI+Rbsb44uTRZ3DuNvhT9dcPXtCdyKGeMUFxkqcvPFeuPmJiYAwcO0P6Pg27l6HLGFI0RU0y6nlTUVkR7Igdxrgh7/lwxu3G2GCHHxNMYAy4MIBrike+RVp7W2N5IeyjZOUuEPX+uWH/wuhghx7QmbVp5mlu+G9GQsMKwjNoMs4Xny+gVFotF2r/0faXT6davX3/o0KGrV6+azWYJn9nX13fKlCl79+4NDg6W8GnBMfJb81+reO1k80lCyESfiZuHbp6qnkp7KHlQ/Aegpqam588V6w/XWYyQY4JF2Fe/b9jFYdbTGJXGStpDSY9OhDdv3ly6dKkkl7x0plarZ8+ejSXAuNFibkm/k+513otoiPq8mr/TGI6OsJefK2Y3V16MkG+3DbdTy1LFY6cjL43cV8/Phyg6LsK8vLwFCxZIcsVZl7AYoSs4pjs29vJY62mMS22XaE8kAUdE2PvPFbMbFiN0HSbBlFGbEVIQYj2N0dDe4LDfvrtut1u+m/jnUMMhSZ5T3giPHDnSy88VsxsWI3RNdaY662mM4ILgTdWb7F59uF1orzJWFbUV/dT007mWcxXGCqNg7O7BO+t2itthoiEHfpXm2g9ZIuzr54rZDYsRurjzreenXZsmJpFwJSG3Kbf3P9tibsmszXzyxpOBFwKtXYl/VPmqOSVzdmh3NJs7XuLPQIRGo3HDhg3x8fFeXl6y5ofFCMEquyE74mKEeBojuTT5luFWz49vF9q31WwLKwzr0F7nP2GFYV/++qXtz8oRoVKqKgwGw0cffTR58uS33367oKBAr9dL9cydiWsx5ebmjh49Wr7fAqyYN2BeUWxReli6l9Jr/6/7Yy7H/KXyL3qh67+BbULbU6VPvVr+aqWp8q7PXGmqXFS66MPqD6Ue+d9JkvKePXtGjRqlVEqWdHc8PDzuv//+oiJXubQX+qTMUPbUjafEzdTkq5M7v2ffIBgevPag7bbO/4L/K7df+bbx2zJDWYu5pcpYld+Sv7ZqrXVFHPFPRm2G+AzOuztaUFAg37kHKyxGCL1xXHd83OVx22u3d/7WGxVv2Ka16Mai7i7BMQmmv1X+TTzwE1sUW6wvFu933ggtFsvTTz8tX35YjBD6xCSYOh8sPdN8RlzbRvyz7Oayu14X/rn28/kl823fyeHUrwm3b98+cuRIqZ7NVlhY2AsvvHD69OnJkyfL8fzAH3eFu5ui49txNtZsFIgg3o5WRWcMy1CSu/z9fzb42X9G/tPfzV+WKf9FsgiDgoJSUlJ6/2nvvSEuRrh///5PPvmkP4tqA1Sbqg80HLB+uWXoFpVCyves9oeUh1LS09PHjBkj1bOFhoY+//zz586dS0xMlOo5wWV9q/vWaDGKt4d7Dp/lP4vuPLakjNDDw+Ott97y9+/vtltcjHD37t2fffaZtG+xB5eV15pnvb0ocNFdd0QdSeJRFi9ePH78+P48Q2hoaEpKyunTpx999FGppgLIa/k9wok+EylO0pn0/x5s27YtLCzMvp+Njo7esWPHF198Iff1buBqbhtvW2+P9R5LcZLOpI8wLi7uoYce6utPiYsRajSaefPmST4SQIO5wXo71F2aJaSlIsue8ccff9yn0xUxMTE7duzYt2+fhEuMAli1Cq3WozKEED+lH8VhOpMlwsDAwMWLF/fmdIW4GOHPP//85JNPyjEJACHEZDHZfumukPJEWv/JdYyoN6crYmNjt27d+tVXX0m4xD1AZ/5u/rbn7pvMTRSH6UyuCN3d3VevXu3n1/V239fXNykp6cSJE0uXLpVpAAArBVHY7oLqBB3FYTqT8WzJ008/PWHChM73R0ZGbty4MScnB8uBgsPYHoy5rr9OcZLO5D1luXXrVtuF1dRq9cyZM3Nzc1944QVZfy9ABwk+Cdbb59vOU5ykM3kjjIuLmzFjhng7Kirqvffe+/777+0+iwhgt0k+k6y3jzUdozhJZ7IfJtq8efPJkycjIyN37twp33KjAD172O9h6+1jumMVpoohHkPojfNvZL+CLigoKDc39/vvv0eBQNEEnwnWPVKBCB9UfkB3HluOuIx1yBBn+ScHXNkfQv5gvZ2pzTzedJziMLac6FpyAFktC15mvXRbIML8G/N702GpodT2ahs5IEJwFR4Kj50RO72V3uKXzULzrJJZK26vsL2228pkMX2n+y6lLCX6cvQ3jd/IOphzXb8DIKsYr5jsyOynSp/SmXWEELPFnKnNzNRmjvMeN8FnwiCPQT5KH227tqitKK81r9HcKP5UVl3WEwFPyDcVIgTXkuSX9FP0T4vLFl/TX7PeWdhWWNhW2N2PnG09a7QYPRVyLbCC3VFwOfd533cp5lLGsIyRqru812ec97i1g9dei70mX4GEEPoflw1AUYmhJEeXU2wo1rZrte1alVI1wG3AYI/B8d7xE30m3qu6t8PjSw2lJ5pPiLdn+M0Y5jms/zMgQgDKsDsKQBkiBKAMEQJQhggBKEOEAJQhQgDKECEAZYgQgDJECEAZIgSgDBECUIYIAShDhACUIUIAyhAhAGWIEIAyRAhAGSIEoAwRAlCGCAEoQ4QAlCFCAMoQIQBliBCAMkQIQBkiBKAMEQJQhggBKEOEAJQhQgDKECEAZYgQgDJECEAZIgSg7P8BWA1nniUJZ7kAAACHelRYdHJka2l0UEtMIHJka2l0IDIwMjQuMDkuNgAAeJx7v2/tPQYgEABiJgYIYAFiZiBuYGRTMAGJM7KwMSQAGYzMggwKIFoZQnEzMLIwgrQxMziBNIpbgUQZYMacPXPGIGhH4A4QR0Ujbr9C8r99ILaZTaz9o+MM+0FsxnfZ1jv/1NuD2GIAajwVpqvJ1skAAADHelRYdE1PTCByZGtpdCAyMDI0LjA5LjYAAHicfZBBDoIwEEX3PcW/gGSgBenCBW2RGENJFL2DiSvj/WOHBgoJcdrFzO+byZ8KcNzc9fXFEoUTAqA/V2uNpyQi0YMTmLa7eNixMbNih4cf71CQoSOcLdmMQz8rOSwooylwiFlJSVpaiwCG97o61pFUuqp3SQn7BpOqiGRJcn+mgvlMsqxYzsJmehdsvdu4jnuYwbu0B59g8tyd8uSZRZmMcanWQ9cjuJ4/MeTiB2uTT8lg2xmuAAAAZXpUWHRTTUlMRVMgcmRraXQgMjAyNC4wOS42AAB4nHOOdnbwiNVwztF0KlKo0dA10LMwM7fQAdImlmYWpjrWBjoGQAIoamIEEjU1MDYAieoZGBib6RjoWQKBqY6mTnmolaGeQQ0AzB8RcYZ02SUAAAAASUVORK5CYII=",
      "image/svg+xml": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 144.0,182.3 L 33.6,257.0 L 23.7,239.7 Z' style='fill:#000000;fill-rule:evenodd;fill-opacity:1;stroke:#000000;stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path class='bond-1 atom-0 atom-2' d='M 144.0,182.3 L 193.8,211.3' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-0 atom-2' d='M 193.8,211.3 L 243.5,240.3' style='fill:none;fill-rule:evenodd;stroke:#00CC00;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-0 atom-3' d='M 144.0,182.3 L 144.2,125.2' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-0 atom-3' d='M 144.2,125.2 L 144.4,68.0' style='fill:none;fill-rule:evenodd;stroke:#7F4C19;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 146.5,183.8 L 144.0,182.3 L 144.0,179.5' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path class='atom-2' d='M 247.9 250.2\n",
       "Q 247.9 243.1, 251.2 239.5\n",
       "Q 254.5 235.7, 260.8 235.7\n",
       "Q 266.6 235.7, 269.8 239.9\n",
       "L 267.1 242.0\n",
       "Q 264.8 239.0, 260.8 239.0\n",
       "Q 256.5 239.0, 254.2 241.9\n",
       "Q 252.0 244.7, 252.0 250.2\n",
       "Q 252.0 255.8, 254.3 258.7\n",
       "Q 256.7 261.5, 261.2 261.5\n",
       "Q 264.4 261.5, 268.0 259.7\n",
       "L 269.1 262.7\n",
       "Q 267.6 263.6, 265.4 264.2\n",
       "Q 263.2 264.7, 260.7 264.7\n",
       "Q 254.5 264.7, 251.2 261.0\n",
       "Q 247.9 257.2, 247.9 250.2\n",
       "' fill='#00CC00'/>\n",
       "<path class='atom-2' d='M 272.6 234.0\n",
       "L 276.3 234.0\n",
       "L 276.3 264.4\n",
       "L 272.6 264.4\n",
       "L 272.6 234.0\n",
       "' fill='#00CC00'/>\n",
       "<path class='atom-3' d='M 148.6 48.7\n",
       "Q 151.3 49.5, 152.7 51.1\n",
       "Q 154.1 52.8, 154.1 55.2\n",
       "Q 154.1 59.1, 151.6 61.4\n",
       "Q 149.1 63.6, 144.4 63.6\n",
       "L 134.8 63.6\n",
       "L 134.8 35.3\n",
       "L 143.2 35.3\n",
       "Q 148.0 35.3, 150.5 37.2\n",
       "Q 152.9 39.2, 152.9 42.8\n",
       "Q 152.9 47.1, 148.6 48.7\n",
       "M 138.6 38.5\n",
       "L 138.6 47.3\n",
       "L 143.2 47.3\n",
       "Q 146.0 47.3, 147.4 46.2\n",
       "Q 148.9 45.1, 148.9 42.8\n",
       "Q 148.9 38.5, 143.2 38.5\n",
       "L 138.6 38.5\n",
       "M 144.4 60.4\n",
       "Q 147.1 60.4, 148.6 59.1\n",
       "Q 150.1 57.7, 150.1 55.2\n",
       "Q 150.1 52.9, 148.4 51.7\n",
       "Q 146.8 50.5, 143.8 50.5\n",
       "L 138.6 50.5\n",
       "L 138.6 60.4\n",
       "L 144.4 60.4\n",
       "' fill='#7F4C19'/>\n",
       "<path class='atom-3' d='M 160.5 43.0\n",
       "L 160.9 45.9\n",
       "Q 163.1 42.7, 166.6 42.7\n",
       "Q 167.7 42.7, 169.3 43.1\n",
       "L 168.7 46.4\n",
       "Q 166.9 46.0, 166.0 46.0\n",
       "Q 164.3 46.0, 163.2 46.7\n",
       "Q 162.1 47.3, 161.2 48.9\n",
       "L 161.2 63.6\n",
       "L 157.5 63.6\n",
       "L 157.5 43.0\n",
       "L 160.5 43.0\n",
       "' fill='#7F4C19'/>\n",
       "</svg>\n"
      ],
      "text/html": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 144.0,182.3 L 33.6,257.0 L 23.7,239.7 Z' style='fill:#000000;fill-rule:evenodd;fill-opacity:1;stroke:#000000;stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path class='bond-1 atom-0 atom-2' d='M 144.0,182.3 L 193.8,211.3' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-0 atom-2' d='M 193.8,211.3 L 243.5,240.3' style='fill:none;fill-rule:evenodd;stroke:#00CC00;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-0 atom-3' d='M 144.0,182.3 L 144.2,125.2' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-0 atom-3' d='M 144.2,125.2 L 144.4,68.0' style='fill:none;fill-rule:evenodd;stroke:#7F4C19;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 146.5,183.8 L 144.0,182.3 L 144.0,179.5' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path class='atom-2' d='M 247.9 250.2\n",
       "Q 247.9 243.1, 251.2 239.5\n",
       "Q 254.5 235.7, 260.8 235.7\n",
       "Q 266.6 235.7, 269.8 239.9\n",
       "L 267.1 242.0\n",
       "Q 264.8 239.0, 260.8 239.0\n",
       "Q 256.5 239.0, 254.2 241.9\n",
       "Q 252.0 244.7, 252.0 250.2\n",
       "Q 252.0 255.8, 254.3 258.7\n",
       "Q 256.7 261.5, 261.2 261.5\n",
       "Q 264.4 261.5, 268.0 259.7\n",
       "L 269.1 262.7\n",
       "Q 267.6 263.6, 265.4 264.2\n",
       "Q 263.2 264.7, 260.7 264.7\n",
       "Q 254.5 264.7, 251.2 261.0\n",
       "Q 247.9 257.2, 247.9 250.2\n",
       "' fill='#00CC00'/>\n",
       "<path class='atom-2' d='M 272.6 234.0\n",
       "L 276.3 234.0\n",
       "L 276.3 264.4\n",
       "L 272.6 264.4\n",
       "L 272.6 234.0\n",
       "' fill='#00CC00'/>\n",
       "<path class='atom-3' d='M 148.6 48.7\n",
       "Q 151.3 49.5, 152.7 51.1\n",
       "Q 154.1 52.8, 154.1 55.2\n",
       "Q 154.1 59.1, 151.6 61.4\n",
       "Q 149.1 63.6, 144.4 63.6\n",
       "L 134.8 63.6\n",
       "L 134.8 35.3\n",
       "L 143.2 35.3\n",
       "Q 148.0 35.3, 150.5 37.2\n",
       "Q 152.9 39.2, 152.9 42.8\n",
       "Q 152.9 47.1, 148.6 48.7\n",
       "M 138.6 38.5\n",
       "L 138.6 47.3\n",
       "L 143.2 47.3\n",
       "Q 146.0 47.3, 147.4 46.2\n",
       "Q 148.9 45.1, 148.9 42.8\n",
       "Q 148.9 38.5, 143.2 38.5\n",
       "L 138.6 38.5\n",
       "M 144.4 60.4\n",
       "Q 147.1 60.4, 148.6 59.1\n",
       "Q 150.1 57.7, 150.1 55.2\n",
       "Q 150.1 52.9, 148.4 51.7\n",
       "Q 146.8 50.5, 143.8 50.5\n",
       "L 138.6 50.5\n",
       "L 138.6 60.4\n",
       "L 144.4 60.4\n",
       "' fill='#7F4C19'/>\n",
       "<path class='atom-3' d='M 160.5 43.0\n",
       "L 160.9 45.9\n",
       "Q 163.1 42.7, 166.6 42.7\n",
       "Q 167.7 42.7, 169.3 43.1\n",
       "L 168.7 46.4\n",
       "Q 166.9 46.0, 166.0 46.0\n",
       "Q 164.3 46.0, 163.2 46.7\n",
       "Q 162.1 47.3, 161.2 48.9\n",
       "L 161.2 63.6\n",
       "L 157.5 63.6\n",
       "L 157.5 43.0\n",
       "L 160.5 43.0\n",
       "' fill='#7F4C19'/>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<rdkit.Chem.rdchem.Mol at 0x34afadc40>"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Chem.MolFromSmiles(\"[C@@H](C)(Cl)(Br)\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "308ef232",
   "metadata": {},
   "source": [
    "E,Z isomerism in double bonds is shown with \"/\" and \"\\\\\".  In the cells below, we can see the visual mnemonic with trans-2-butene as C/C=C/C and cis-2-butene as C/C=C\\C. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "4d01257e",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:14.987521Z",
     "start_time": "2025-05-05T16:57:14.983209Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "image/svg+xml": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 285.0,130.9 L 195.0,182.8' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 195.0,182.8 L 105.0,130.7' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 195.0,164.8 L 112.8,117.2' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-2 atom-3' d='M 105.0,130.7 L 15.0,182.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 199.5,180.2 L 195.0,182.8 L 190.5,180.2' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 109.5,133.3 L 105.0,130.7 L 100.5,133.3' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "</svg>\n"
      ],
      "text/html": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 285.0,130.9 L 195.0,182.8' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 195.0,182.8 L 105.0,130.7' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 195.0,164.8 L 112.8,117.2' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-2 atom-3' d='M 105.0,130.7 L 15.0,182.6' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 199.5,180.2 L 195.0,182.8 L 190.5,180.2' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 109.5,133.3 L 105.0,130.7 L 100.5,133.3' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<rdkit.Chem.rdchem.Mol at 0x34afade00>"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Chem.MolFromSmiles(\"C/C=C/C\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "0a5b2a7e",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:15.000036Z",
     "start_time": "2025-05-05T16:57:14.995199Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "image/svg+xml": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 284.9,33.0 L 285.0,188.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 285.0,188.9 L 150.1,267.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 261.6,175.4 L 150.0,240.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-2 atom-3' d='M 150.1,267.0 L 15.0,189.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 285.0,181.1 L 285.0,188.9 L 278.3,192.8' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 156.8,263.1 L 150.1,267.0 L 143.3,263.1' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "</svg>\n"
      ],
      "text/html": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='300px' height='300px' viewBox='0 0 300 300'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='300.0' height='300.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 284.9,33.0 L 285.0,188.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 285.0,188.9 L 150.1,267.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 261.6,175.4 L 150.0,240.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-2 atom-3' d='M 150.1,267.0 L 15.0,189.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 285.0,181.1 L 285.0,188.9 L 278.3,192.8' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 156.8,263.1 L 150.1,267.0 L 143.3,263.1' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<rdkit.Chem.rdchem.Mol at 0x34afadf50>"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Chem.MolFromSmiles(\"C/C=C\\C\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "907edc5b",
   "metadata": {},
   "source": [
    "### Canonical SMILES"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f12a768f",
   "metadata": {},
   "source": [
    "There are many ways to write a SMILES for the same molecule.  For instance, in the cell below, we show five different ways to write the SMILES for pentane. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "29f3b247",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:15.011580Z",
     "start_time": "2025-05-05T16:57:15.007812Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:rdkit=\"http://www.rdkit.org/xml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" baseProfile=\"full\" xml:space=\"preserve\" width=\"600px\" height=\"400px\" viewBox=\"0 0 600 400\">\n",
       "<!-- END OF HEADER -->\n",
       "<rect style=\"opacity:1.0;fill:#FFFFFF;stroke:none\" width=\"200.0\" height=\"200.0\" x=\"0.0\" y=\"0.0\"> </rect>\n",
       "<path class=\"bond-0 atom-0 atom-1\" d=\"M 10.0,112.9 L 55.0,87.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-1 atom-1 atom-2\" d=\"M 55.0,87.0 L 100.0,113.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-2 atom-2 atom-3\" d=\"M 100.0,113.0 L 145.0,87.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-3 atom-3 atom-4\" d=\"M 145.0,87.0 L 190.0,113.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path d=\"M 52.8,88.3 L 55.0,87.0 L 57.3,88.3\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 97.8,111.7 L 100.0,113.0 L 102.3,111.7\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 142.8,88.3 L 145.0,87.0 L 147.3,88.3\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path class=\"bond-0 atom-0 atom-1\" d=\"M 210.0,112.9 L 255.0,87.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-1 atom-1 atom-2\" d=\"M 255.0,87.0 L 300.0,113.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-2 atom-2 atom-3\" d=\"M 300.0,113.0 L 345.0,87.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-3 atom-3 atom-4\" d=\"M 345.0,87.0 L 390.0,113.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path d=\"M 252.8,88.3 L 255.0,87.0 L 257.3,88.3\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 297.8,111.7 L 300.0,113.0 L 302.3,111.7\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 342.8,88.3 L 345.0,87.0 L 347.3,88.3\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path class=\"bond-0 atom-0 atom-1\" d=\"M 410.0,112.9 L 455.0,87.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-1 atom-1 atom-2\" d=\"M 455.0,87.0 L 500.0,113.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-2 atom-2 atom-3\" d=\"M 500.0,113.0 L 545.0,87.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-3 atom-3 atom-4\" d=\"M 545.0,87.0 L 590.0,113.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path d=\"M 452.8,88.3 L 455.0,87.0 L 457.3,88.3\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 497.8,111.7 L 500.0,113.0 L 502.3,111.7\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 542.8,88.3 L 545.0,87.0 L 547.3,88.3\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path class=\"bond-0 atom-0 atom-1\" d=\"M 10.0,312.9 L 55.0,287.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-1 atom-1 atom-2\" d=\"M 55.0,287.0 L 100.0,313.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-2 atom-2 atom-3\" d=\"M 100.0,313.0 L 145.0,287.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-3 atom-3 atom-4\" d=\"M 145.0,287.0 L 190.0,313.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path d=\"M 52.8,288.3 L 55.0,287.0 L 57.3,288.3\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 97.8,311.7 L 100.0,313.0 L 102.3,311.7\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 142.8,288.3 L 145.0,287.0 L 147.3,288.3\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path class=\"bond-0 atom-0 atom-1\" d=\"M 210.0,312.9 L 255.0,287.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-1 atom-1 atom-2\" d=\"M 255.0,287.0 L 300.0,313.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-2 atom-2 atom-3\" d=\"M 300.0,313.0 L 345.0,287.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-3 atom-3 atom-4\" d=\"M 345.0,287.0 L 390.0,313.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path d=\"M 252.8,288.3 L 255.0,287.0 L 257.3,288.3\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 297.8,311.7 L 300.0,313.0 L 302.3,311.7\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 342.8,288.3 L 345.0,287.0 L 347.3,288.3\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "</svg>"
      ],
      "text/plain": [
       "<IPython.core.display.SVG object>"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pentane_smiles_list = [\"CCCCC\",\"C(CCCC)\",\"C-C-C-C-C\",\"[CH3][CH2][CH2][CH2][CH3]\",\"CC(CCC)\"]\n",
    "# If the line below doesn't make sense to you, take a look at list comprehensions in Python\n",
    "pentane_mol_list = [Chem.MolFromSmiles(x) for x in pentane_smiles_list]\n",
    "Chem.Draw.MolsToGridImage(pentane_mol_list)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e94994f8",
   "metadata": {},
   "source": [
    "It's convenient to be able to write many SMILES for the same molecule, but this can also be a problem.  Let's say we're trying to keep track of the number of unique molecules in a set.  If the same molecule can have several SMILES, it can be difficult to keep track of which molecules are the same.  Fortunately, [the RDKit](https://www.rdkit.org/docs/source/rdkit.Chem.rdmolfiles.html) and many other Cheminformatics toolkits have methods for creating what is called a **canonical** representation.  These methods should always create the same SMILES for a molecule.  Here's an example where we create a canonical SMILES for the pentane_smiles_list above. Note that all the input SMILES are different but all the output SMILES are the same.  It's important to know that all Cheminformatics toolkits do not generate the same canonical SMILES."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "ef032f90",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:15.018813Z",
     "start_time": "2025-05-05T16:57:15.016778Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CCCCC\n",
      "CCCCC\n",
      "CCCCC\n",
      "CCCCC\n",
      "CCCCC\n"
     ]
    }
   ],
   "source": [
    "pentane_smiles_list = [\"CCCCC\",\"C(CCCC)\",\"C-C-C-C-C\",\"[CH3][CH2][CH2][CH2][CH3]\",\"CC(CCC)\"]\n",
    "# If the line below doesn't make sense to you, take a look at list comprehensions in Python\n",
    "pentane_mol_list = [Chem.MolFromSmiles(x) for x in pentane_smiles_list]\n",
    "for mol in pentane_mol_list:\n",
    "    pentane_smiles = Chem.MolToSmiles(mol)\n",
    "    print(pentane_smiles)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5dd4b2f5",
   "metadata": {},
   "source": [
    "Canonical SMILES typically don't resolve tautomers to the same structure.  Specialized methods that are beyond the scope of this discussion are often required to create the same SMILES from Tautomers. In the example below we look at the SMILES for the keto and enol tautomers of pyridone. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "060e9ae5",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:15.027910Z",
     "start_time": "2025-05-05T16:57:15.026388Z"
    }
   },
   "outputs": [],
   "source": [
    "tautomer_smiles_list = [\"C1C=CC(=O)NC=1\",\"C1=CC=C(O)N=C1\"]\n",
    "tautomer_mol_list = [Chem.MolFromSmiles(x) for x in tautomer_smiles_list]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "197369fc",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:15.038183Z",
     "start_time": "2025-05-05T16:57:15.035133Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:rdkit=\"http://www.rdkit.org/xml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" baseProfile=\"full\" xml:space=\"preserve\" width=\"600px\" height=\"200px\" viewBox=\"0 0 600 200\">\n",
       "<!-- END OF HEADER -->\n",
       "<rect style=\"opacity:1.0;fill:#FFFFFF;stroke:none\" width=\"200.0\" height=\"200.0\" x=\"0.0\" y=\"0.0\"> </rect>\n",
       "<path class=\"bond-0 atom-0 atom-1\" d=\"M 116.0,189.8 L 164.4,162.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-1 atom-1 atom-2\" d=\"M 164.4,162.0 L 164.5,106.1\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-1 atom-1 atom-2\" d=\"M 156.0,157.1 L 156.1,110.9\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-2 atom-2 atom-3\" d=\"M 164.5,106.1 L 116.2,78.1\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-3 atom-3 atom-4\" d=\"M 120.4,80.5 L 120.4,58.5\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-3 atom-3 atom-4\" d=\"M 120.4,58.5 L 120.5,36.4\" style=\"fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-3 atom-3 atom-4\" d=\"M 112.0,80.5 L 112.0,58.4\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-3 atom-3 atom-4\" d=\"M 112.0,58.4 L 112.1,36.4\" style=\"fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-4 atom-3 atom-5\" d=\"M 116.2,78.1 L 97.4,88.9\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-4 atom-3 atom-5\" d=\"M 97.4,88.9 L 78.6,99.7\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-5 atom-5 atom-6\" d=\"M 67.7,119.6 L 67.7,140.7\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-5 atom-5 atom-6\" d=\"M 67.7,140.7 L 67.6,161.8\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-6 atom-6 atom-0\" d=\"M 67.6,161.8 L 116.0,189.8\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-6 atom-6 atom-0\" d=\"M 76.0,156.9 L 116.0,180.1\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path d=\"M 118.4,188.4 L 116.0,189.8 L 113.5,188.4\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 162.0,163.3 L 164.4,162.0 L 164.4,159.2\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 164.5,108.9 L 164.5,106.1 L 162.1,104.7\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 118.6,79.5 L 116.2,78.1 L 115.2,78.6\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 67.6,160.7 L 67.6,161.8 L 70.0,163.2\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path class=\"atom-4\" d=\"M 105.4 22.3 Q 105.4 16.6, 108.2 13.4 Q 111.0 10.2, 116.3 10.2 Q 121.6 10.2, 124.4 13.4 Q 127.2 16.6, 127.2 22.3 Q 127.2 28.0, 124.3 31.3 Q 121.5 34.6, 116.3 34.6 Q 111.1 34.6, 108.2 31.3 Q 105.4 28.1, 105.4 22.3 M 116.3 31.9 Q 119.9 31.9, 121.9 29.5 Q 123.8 27.0, 123.8 22.3 Q 123.8 17.6, 121.9 15.3 Q 119.9 12.9, 116.3 12.9 Q 112.7 12.9, 110.7 15.2 Q 108.7 17.6, 108.7 22.3 Q 108.7 27.1, 110.7 29.5 Q 112.7 31.9, 116.3 31.9 \" fill=\"#FF0000\"/>\n",
       "<path class=\"atom-5\" d=\"M 35.5 94.0 L 38.7 94.0 L 38.7 104.1 L 50.9 104.1 L 50.9 94.0 L 54.1 94.0 L 54.1 117.8 L 50.9 117.8 L 50.9 106.8 L 38.7 106.8 L 38.7 117.8 L 35.5 117.8 L 35.5 94.0 \" fill=\"#0000FF\"/>\n",
       "<path class=\"atom-5\" d=\"M 62.5 94.0 L 70.3 106.6 Q 71.0 107.8, 72.3 110.1 Q 73.5 112.3, 73.6 112.5 L 73.6 94.0 L 76.7 94.0 L 76.7 117.8 L 73.5 117.8 L 65.1 104.0 Q 64.2 102.4, 63.1 100.6 Q 62.1 98.7, 61.8 98.2 L 61.8 117.8 L 58.7 117.8 L 58.7 94.0 L 62.5 94.0 \" fill=\"#0000FF\"/>\n",
       "<path class=\"bond-0 atom-0 atom-1\" d=\"M 390.0,66.4 L 341.8,38.2\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-0 atom-0 atom-1\" d=\"M 381.6,71.2 L 341.7,47.9\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-1 atom-1 atom-2\" d=\"M 341.8,38.2 L 293.2,65.8\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-2 atom-2 atom-3\" d=\"M 293.2,65.8 L 292.9,121.7\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-2 atom-2 atom-3\" d=\"M 301.6,70.7 L 301.3,116.9\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-3 atom-3 atom-4\" d=\"M 292.9,121.7 L 275.0,131.9\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-3 atom-3 atom-4\" d=\"M 275.0,131.9 L 257.1,142.1\" style=\"fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-4 atom-3 atom-5\" d=\"M 292.9,121.7 L 311.6,132.6\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-4 atom-3 atom-5\" d=\"M 311.6,132.6 L 330.2,143.6\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-5 atom-5 atom-6\" d=\"M 351.9,143.8 L 370.8,133.0\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-5 atom-5 atom-6\" d=\"M 370.8,133.0 L 389.6,122.3\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-5 atom-5 atom-6\" d=\"M 347.8,136.5 L 364.5,126.9\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-5 atom-5 atom-6\" d=\"M 364.5,126.9 L 381.3,117.4\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path class=\"bond-6 atom-6 atom-0\" d=\"M 389.6,122.3 L 390.0,66.4\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
       "<path d=\"M 387.6,65.0 L 390.0,66.4 L 390.0,69.2\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 344.2,39.6 L 341.8,38.2 L 339.4,39.6\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 295.7,64.4 L 293.2,65.8 L 293.2,68.6\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path d=\"M 388.7,122.8 L 389.6,122.3 L 389.7,119.5\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
       "<path class=\"atom-4\" d=\"M 210.0 137.6 L 213.2 137.6 L 213.2 147.7 L 225.4 147.7 L 225.4 137.6 L 228.6 137.6 L 228.6 161.3 L 225.4 161.3 L 225.4 150.3 L 213.2 150.3 L 213.2 161.3 L 210.0 161.3 L 210.0 137.6 \" fill=\"#FF0000\"/>\n",
       "<path class=\"atom-4\" d=\"M 233.4 149.4 Q 233.4 143.7, 236.3 140.5 Q 239.1 137.3, 244.3 137.3 Q 249.6 137.3, 252.4 140.5 Q 255.2 143.7, 255.2 149.4 Q 255.2 155.1, 252.4 158.4 Q 249.5 161.7, 244.3 161.7 Q 239.1 161.7, 236.3 158.4 Q 233.4 155.2, 233.4 149.4 M 244.3 159.0 Q 247.9 159.0, 249.9 156.6 Q 251.9 154.1, 251.9 149.4 Q 251.9 144.7, 249.9 142.4 Q 247.9 140.0, 244.3 140.0 Q 240.7 140.0, 238.7 142.3 Q 236.8 144.7, 236.8 149.4 Q 236.8 154.2, 238.7 156.6 Q 240.7 159.0, 244.3 159.0 \" fill=\"#FF0000\"/>\n",
       "<path class=\"atom-5\" d=\"M 335.8 138.1 L 343.6 150.6 Q 344.4 151.9, 345.6 154.1 Q 346.9 156.4, 346.9 156.5 L 346.9 138.1 L 350.1 138.1 L 350.1 161.8 L 346.8 161.8 L 338.5 148.1 Q 337.5 146.4, 336.5 144.6 Q 335.5 142.8, 335.2 142.2 L 335.2 161.8 L 332.1 161.8 L 332.1 138.1 L 335.8 138.1 \" fill=\"#0000FF\"/>\n",
       "</svg>"
      ],
      "text/plain": [
       "<IPython.core.display.SVG object>"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Chem.Draw.MolsToGridImage(tautomer_mol_list)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3305a9a5",
   "metadata": {},
   "source": [
    "Now let's generate canonical SMILES for each of these species.  In looking at the SMILES below, please notice two things. \n",
    "- The SMILES for the ring atoms have been converted to lowercase, indicating that this is an aromatic system.\n",
    "- The two tautomers still have different SMILES"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "f5ac161c",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:15.046378Z",
     "start_time": "2025-05-05T16:57:15.044669Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "O=c1cccc[nH]1\n",
      "Oc1ccccn1\n"
     ]
    }
   ],
   "source": [
    "for mol in tautomer_mol_list:\n",
    "    print(Chem.MolToSmiles(mol))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6f88679b",
   "metadata": {},
   "source": [
    "### Exercise\n",
    "\n",
    "Complete the code below to determine the number of unqiue molecule represented by **smiles_list**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "fd5ec830",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-05T16:57:15.053480Z",
     "start_time": "2025-05-05T16:57:15.052005Z"
    }
   },
   "outputs": [],
   "source": [
    "buff = \"\"\"C(=N)(N)N.Cl\n",
    "Cn1c(=O)c2[nH]cnc2n(C)c1=O.Cn1c(=O)c2[nH]cnc2n(C)c1=O.NCCN\n",
    "Nc1ccc(S(=O)(=O)Nc2ccccn2)cc1\n",
    "Cl.N=C(N)N\n",
    "CCC(C)C1(C(=O)NC(=O)[N-]C1=O)CC.[Na+]\n",
    "C[C@]12CCC(=O)C=C1CC[C@@H]3[C@@H]2CC[C@]4([C@H]3CC[C@]4(C)O)C\n",
    "CCC(C)C1(CC)C(=O)[N-]C(=O)NC1=O.[Na+]\n",
    "Cn1c2c(c(=O)n(c1=O)C)[nH]cn2.Cn1c2c(c(=O)n(c1=O)C)[nH]cn2.C(CN)N\n",
    "C[C@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@H]3CC[C@@]21C\n",
    "c1ccnc(c1)NS(=O)(=O)c2ccc(cc2)N\"\"\"\n",
    "smiles_list = buff.split(\"\\n\")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
